2011-07-16 56 views
0

我想将每个列表(#list)项目的类别更改为Array上的对应项目。我有一个列表是这样的:更改列表元素的类别

<ul id="list"> 
    <li>Banana</li> 
    <li>Apple</li> 
    <li>Pear</li> 
    <li>Strawberry</li> 
    <li>Lemon</li> 
</ul> 

我有此数组:

["ban", "appl", "per", "straw", "lemn"] 

我想的是,jQuery.addClass()功能改变与class每个项目的顺序,因为它们是在Array。结果如下:

<ul id="list"> 
    <li class="ban">Banana</li> 
    <li class="appl">Apple</li> 
    <li class="per">Pear</li> 
    <li class="straw">Strawberry</li> 
    <li class="lemn">Lemon</li> 
</ul> 

我该怎么办?

回答

4

should work为您提供:

var classes = ["ban", "appl", "per", "straw", "lemn"]; 

$('#list > li').addClass(function(index) { 
    return classes[index]; 
}); 

你可以看到这个过载(就是那个需要function(index, currentClass)回调)on the jQuery website的文档。

+0

这不会对嵌套列表的工作。 –

+2

鉴于OP对数组中的每个索引都有一个特定的类,我怀疑他关心嵌套列表。无论如何,虽然(谢谢)! –

+0

给出代码,'.find()'可以正常工作。您可以始终使用'.children()'代替。 – user113716

2
$('#list > li').each(function(i){ 
    $(this).addClass(myArray[i]); 
}); 
2
var myArray = ["ban", "appl", "per", "straw", "lemn"]; 
$("#list > li").each(function(index) { 
    $(this).addClass(myArray[index]); 
}); 
1
$.each(myArray, function(i, value){ 
     $('#list li').eq(i).addClass(value); 
    } 
); 
+0

这将不起作用,因为'.get()'返回一个DOM元素而不是一个jQuery对象。另外,在循环中重新运行相同的选择器并不是一个好主意。 – user113716

+0

谢谢,编辑,但我喜欢丹涛更好。 – Paulpro