2010-11-22 5 views
1

Je veux ajouter css position supérieure relativement. si sa position supérieure est 30px, je veux ajouter sa position +30, de sorte que son résultat est 60px.jquery, Toute version courte pour changer la position supérieure relativement

donc je dois le faire comme ça,

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

est-il un moyen plus court ou moyen effecient de le faire.

+0

vous pouvez calculer dans une variable séparée et peut donner le droit de la valeur finale. – kobe

Répondre

2

Si vous le souhaitez, vous pouvez utiliser la méthode .animate() qui permet des incréments, et utiliser 0 comme durée pour que cela se produise instantanément.

$('#btn').animate({top:'+=10'},0); 

exemple à http://www.jsfiddle.net/gaby/Pre8A/1/

1

JavaScript peut toujours être plus court. Utilisez un outil pour le compresser ou le réduire, ne le faites pas manuellement.

Vous pouvez être plus efficace en obtenant seulement votre bouton une fois. En outre, si vous voulez que les autres voient ce que vous avez l'intention de faire, il est préférable d'utiliser des noms de variables explicatifs.

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

ne hésitez pas à raccourcir ce à

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

post-scriptum La position exacte de l'élément peut être différente de ce que vous avez spécifié dans votre CSS. Si vous rencontrez des problèmes de positionnement, regardez dans la fonction jQuery offset(), position(), etc - voir http://api.jquery.com/category/css/.

+0

Notez également ce que sarfraz dit à propos d'entier/chaîne. Et notez que parseInt a besoin d'une base 10 pour s'assurer qu'il n'y a pas d'analyse accidentelle de la notation octale. Le point principal de ma réponse était de réduire l'appel jQuery pour obtenir l'élément #btn de 2 recherches à un. C'est le gain d'efficacité principal dans ce problème. – dyve

1

une autre way

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

ne devriez-vous pas utiliser le second param (value) de la fonction callback: function (index, value) {return value + 30; } – Gidon

+0

oui je le change merci –

0

qui ajouterait top courant à 30 résultat 30px30, vous devez utiliser parseInt:

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

Vous devez utiliser

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

Il ajoute seulement 30 à la valeur actuelle. Simple. Cela fonctionne aussi pour toute autre valeur CSS.

+0

c'est complètement faux. La valeur +30 donnée en tant que nombre signifie 30. Mais même s'il s'agissait d'une chaîne, la méthode '.css()' ne supporte pas les incréments. –

+0

Je l'ai changé donc c'est un dictionnaire, mais ça aurait dû fonctionner avant. De http://jqueryfordesigners.com, il utilise 'info.css ({top: -90, left: -33, display: 'block'})', et cela fonctionne parfaitement. – Fred

+0

+ et - dans ce cas, signifie positif et négatif .. ne pas incrémenter et décrémenter. –

0

De jQuery 1.6, vous pouvez utiliser:

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

Cela ne fonctionne pas dans Chrome. – Arnaud

Questions connexes