2013-08-04 199 views
0

道歉我真的不知道如何标题这篇文章。addClass - 一个功能,而不是3个功能(缩短代码)

我在YUI中有以下3个函数。我要做的就是寻找一个div类名.box2.box3,或.box4,然后添加其他类所有这些div即在.box2格得到另一个格0.2

下面的代码工作正常,但我太过分了,把它全部组合成了一个函数,用于编写变量的所有值,而不是像这样写出3次。

var number = 2; 
var nodes = Y.all(".box"+ number); 

nodes.each(function(node){ 

    node.addClass(number); 

}); 



var number = 3; 
var nodes = Y.all(".box"+ number); 

nodes.each(function(node){ 

    node.addClass(number); 

}); 



var number = 4; 
var nodes = Y.all(".box"+ number); 

nodes.each(function(node){ 

    node.addClass(number); 

}); 

非常感谢!

+0

你重新声明'number'和'nodes'每次... – elclanrs

回答

1

这是怎么回事?

var numbers = [2, 3, 4]; 

for(var i = 0; i < numbers.length; i++) 
{ 
    var boxnum = numbers[i]; 
    Y.all(".box"+boxnum).addClass(boxnum); 
} 

http://jsfiddle.net/854Th/

+0

欢呼丹,这似乎应该工作,但它对我没有任何帮助! – user1525612

+0

对不起,看到我的编辑,我不熟悉YUI,我有这个工作在jsfiddle虽然! – danbroooks

+0

感谢丹,那美好的工作。谢谢你的小提琴! – user1525612

2

您不必做each。只需在Y.all(...)上使用addClass函数即可。像这样......

var arr = [2, 3, 4]; 
var query = ".box" + arr.join(", .box"); 
Y.all(query).addClass(levelnumber); 
+0

感谢mohkan,但后来我怎么声明变量“数”的价值?它如何知道为2到4的所有值做这个函数? – user1525612

+0

看到我编辑的代码。这应该对你有所帮助。 – mohkhan

+0

非常感谢mohkan,我将来需要这些代码。希望我可以在这里标记多个正确答案:( – user1525612