2011-07-16 55 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