2016-04-26 62 views
0

我正在生成具有不同狀態名稱的項目列表作爲類名稱。這些列表項需要使用相同的類名稱作爲id附加到無序列表中。所以,目前的DOM的樣子:如何添加一個類名與無序列表ID相同的列表項?

<ul id="Montana"></ul> 
<ul id="Nebraska"></ul> 
<ul id="Oregon"></ul> 
<li class="Montana>Hello World</li> 
<li class="Montana>Hello World</li> 
<li class="Oregon>Hello World</li> 
<li class="Nebraska>Hello World</li> 
<li class="Montana>Hello World</li> 
<li class="Montana>Hello World</li> 
<li class="Oregon>Hello World</li> 
<li class="Montana>Hello World</li> 

一般情況下我只是通過追加像循環:

for(var i =0; i < something.length; i++){ $('#' + something[i]).append('.' + something[i]); 

但是,目前沒有工作。老實說,我可能只是做一個小型中風,需要一巴掌。

有什麼建議嗎?打在臉上?

編輯:

我返回了一個JSON blob。它的一個關鍵/值對是「狀態」:無論狀態如何。我通過blob運行for循環,並用這些class/id名稱創建一堆ul和li。我會展示我的所有代碼,但是我還添加了一堆SVG相關的東西,這些東西只會讓問題膨脹。

+0

可以使用更多的代碼上下文... – IMTheNachoMan

+0

什麼是你的代碼中的東西? – IMTheNachoMan

回答

1

這項工作?獲取所有li s,遍歷它們,找到匹配每個li s類的ID並追加li

var lis = document.getElementsByTagName("li"); 
for(var i = 0, numLis = lis.length; i < numLis; ++i) 
{ 
    document.getElementById(lis[i].className).appendChild(lis[i]); 
} 
1

使用jQuery:

$('li').each(function(index, li){ 
    li = $(li); 
    li.appendTo($('ul#' + li.attr('class'))); 
}); 
0

雖然我不知道你爲什麼要添加國家名稱作爲類/ IDS,我不建議加這種東西(一般頁面數據)到屬性中的html(除非將它添加到'data'屬性中)。一般來說,類和id是用於樣式和功能的,數據應該在一個單獨的元素中(如果它應該是隱藏的)。

您可以改爲創建元素層次結構。事情是這樣的:

<li class="state-li"> 
    <div class="text"> 
    Hello World 
    </div> 
    <div class="state-name hidden"> 
    Montana 
    </div> 
</li> 

,那麼你可以使用jQuery很容易地找到state-li

的孩子

但回答你的問題(jQuery的):

elementToAppendTo = $('#elementId'); 
stateList = [list of states]; 
var length = stateList.length; 

for(var i = 0; i < length; i++) { 
    $(elementToAppendTo).append("<li id='" + stateList[i] + "'></li>"); 
} 
0

謝謝大家!我結束了一個:

$('.' + something[i].stateName).appendTo('#' + something[i].stateName); 

成爲伎倆。有了這個說法,我很確定你們所提供的建議也可以發揮作用。

相關問題