2012-03-10 141 views
2

它可以使用变量的值:变量作为属性名称

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

但如果我尝试相反:

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

它不工作。有没有优雅的解决方案?

回答

1

就你而言,你不需要一个对象,因为你只设置了一个属性。用途:

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

如果你想要一个对象,你将不得不作出一个空的一个第一,然后设置使用[...]符号属性,并传递obj。但是,这绝对是矫枉过正这里:

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

这最好,因为我也可以使用它.animate()!谢谢! – user1261488 2012-03-10 20:53:37

1

在这种情况下,您可以使用名称和值作为单独的参数来调用css

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

当然是。使用备用.css语法。

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

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

对象字面值不支持变量作为关键字。关键应始终保持不变。但是,您可以使用[]来设置属性。

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