2010-11-22 6 views
1

Ich möchte Css Top-Position relativ hinzufügen. Wenn seine obere Position 30px ist, möchte ich seine Position +30, hinzufügen, so dass das Ergebnis 60px ist.jquery, Any kurze Version zu Top-Position relativ zu ändern

so habe ich dies das wie zu tun,

$("#btn").css("top", $("#btn").css("top")+30); 

gibt es einen kürzeren Weg oder effecient Weg, dies zu tun.

+0

Sie es in einer separaten Variable berechnen kann und den Endwert Recht geben. – kobe

Antwort

1

JavaScript kann immer kürzer sein. Verwenden Sie ein Werkzeug, um es zu komprimieren oder zu verkleinern, tun Sie es nicht manuell.

Sie können effizienter sein, indem Sie Ihren Knopf nur einmal erhalten. Wenn Sie möchten, dass andere sehen, was Sie vorhaben, ist es am besten, selbsterklärende Variablennamen zu verwenden.

var btn = $("btn"); 
var top = btn.css("top"); 
btn.css("top", top + 30); 

fühlen sich frei, diese

var btn = $("btn"); 
btn.css("top", btn.css("top") + 30); 

P. S. zu

verkürzen Die genaue Position des Elements kann sich von der in Ihrem CSS angegebenen Position unterscheiden. Wenn Sie Probleme mit der Positionierung haben, schauen Sie in die jQuery-Funktion offset(), position() usw. - siehe http://api.jquery.com/category/css/.

+0

Beachten Sie auch, was Sarfraz über Integer/String sagt. Und beachten Sie, dass parseInt eine Basis 10 benötigt, um sicherzustellen, dass kein zufälliges Parsen aus der Oktalnotation erfolgt. Der Hauptpunkt meiner Antwort war, den jQuery-Aufruf zu reduzieren, um das #btn-Element von zwei Nachschlagevorgängen zu einem zu bekommen. Das ist der größte Effizienzgewinn in diesem Problem. – dyve

1

andere way

$('#btn').css('top', function(index,value) { 
    return value +30; 
}); 
+0

sollten Sie nicht den zweiten Param (Wert) der Callback-Funktion verwenden: function (index, value) {return value + 30; } – Gidon

+0

ja ich ändere es dank –

0

Die aktuellen Top-30 in 30px30 resultierenden hinzufügen würde, sollten Sie parseInt verwenden:

$("#btn").css("top", (parseInt($("#btn").css("top")) + 30) + 'px'); 
0

Sie

$('#btn').css({top: +30}); 

verwenden sollen Sie fügen hinzu, nur 30 auf den aktuellen Wert. Einfach. Dies funktioniert auch für andere CSS-Werte.

+0

das ist einfach falsch. Wenn die Zahl +30 als Zahl angegeben wird, bedeutet das 30. Auch wenn es sich um eine Zeichenfolge handelte, unterstützt die Methode '.css()' keine Inkremente. –

+0

Ich habe es geändert, so dass es ein Wörterbuch ist, aber es hätte noch früher funktionieren sollen. Von http://jqueryfordesigners.com verwendet er 'info.css ({top: -90, links: -33, display: 'block'})', und es funktioniert perfekt. – Fred

+0

+ und - in diesem Fall bedeuten positive und negative .. nicht inkrementieren und dekrementieren. –

0

Von 1.6 jQuery können Sie:

$("#btn").css("top", "+=30"); 
+0

Es funktioniert nicht in Chrome. – Arnaud

Verwandte Themen