我试图在看到重复之后优化我的代码。
以下是代码:
function show($div, $change, $value){
var $container = "#" + $div;
var $class = $div + "-" + "hidden";
//alert($class + $container + $change + $value);
$($container).addClass($class);
$($container).animate({
$change: $value
}, 1000, function(){
$($container).removeClass($class);
}
);
}
show('header', 'top', '0');
show('nav', 'left', '0');
show('wrapper', 'opacity', '0');
这个区域:$ change:$ value - 是我在脚本中遇到麻烦的地方。我可以这样做吗?它们应该以字符串形式出现吗?
答案 0 :(得分:2)
function show($div, $change, $value){
var $container = "#" + $div;
var $class = $div + "-" + "hidden";
//alert($class + $container + $change + $value);
$($container).addClass($class);
var animation = {}; // create another object
animation[$change] = $value; // and set its property
$($container).animate(animation, 1000, function(){
$($container).removeClass($class);
}
);
}
答案 1 :(得分:1)
我认为您正在尝试在文字中动态设置变量名称。在JavaScript中,您可以像objectname["variablename"] = value
实际上你可以做两件事:
虽然有些人可能会把2称为过早优化的例子,但我认为它会使你的代码更具可读性。
function show($div, $change, $value){
var $container = "#" + $div;
var $class = $div + "-" + "hidden";
//alert($class + $container + $change + $value);
var animation = {}; //declare a literal
animation[$change] = $value; //create a name-value pair based on args
var jqContainer = $($container); //extract multiple jQuery evaluations
jqContainer.addClass($class);
jqContainer.animate(animation, 1000, function(){
jqContainer.removeClass($class);
}
);
}