2012-03-10 6 views
2

Il est possible d'utiliser une variable comme valeur:variable comme nom d'attribut

$("#anything").css({ 
    "top": value 
}); 

Mais si j'essaie le contraire:

toporbottom = "top"; 
$("anything").css({ 
    toporbottom: "50px" 
}); 

cela ne fonctionne pas. Y a-t-il une solution élégante?

Répondre

1

Dans votre cas, vous n'avez pas besoin d'objet car vous ne définissez qu'une seule propriété. Utilisation:

$(...).css(toporbottom, "50px"); 

Si vous voulez un objet, vous aurez à faire un vide d'abord, puis définissez la propriété en utilisant la notation [...] et passer obj. Mais c'est vraiment surpuissant ici:

var obj = {}; 
obj[toporbottom] = "50px"; // `obj["top"]` is the same as `obj.top` 
$(...).css(obj); 
+0

Cela fonctionne mieux car je peux aussi l'utiliser avec .animate()! Merci! – user1261488

1

Dans ce cas, vous pouvez appeler css en utilisant le nom et la valeur comme arguments individuels:

toporbottom = "top"; 
$("anything").css(toporbottom, "50px"); 
1

Bien sûr, il est. Utilisez la syntaxe alternative .css.

$(document).ready(function(){ 
    var topOrBottom = "top"; 

    $("#changeme").css(topOrBottom, 200); 
}); 
1

Le littéral d'objet ne prend pas en charge la variable en tant que clé. La clé devrait toujours être constante. Cependant, vous pouvez utiliser le [] pour définir une propriété.

toporbottom = "top"; 
var obj = {}; 
obj[toporbottom] = "50px"; // Line of interest 
$("anything").css(obj); 
Questions connexes