2012-11-14 89 views
2

我有一個基本的字符串變量來存儲HTML內容。JQuery for循環嵌入HTML元素中的元素

字符串中的HTML是一種複雜的列表如下所示:

<ul> 
<li>One 
    <ul> 
    <li>a</li> 
    <li>b</li> 
    <li>c</li> 
    </ul> 
</li> 
<li>Two 
    <ul> 
    <li>d</li> 
    <li>e</li> 
    <li>f 
     <ul> 
     <li>g</li> 
     <li>h</li> 
     <li>i</li> 
     </ul> 
    </li> 
    </ul> 
</li> 
<li>Three</li> 

上面是一個簡化的例子,但你可以看到,是列表中的元素的未知數量。列表元素可以包含另一個列表。有水平的未知數量(列表元素可以有不明(可能是最大9)父母<ul>

現在,當我把這個字符串轉換成HTML我做了以下內容:

var obj = $(myHTMLString); 

然而,這隻返回列表元素的第一級 - 因此,在下面的for循環中,只搜索第一級。我知道如何搜索子元素(在代碼的else部分),但我需要爲所有人列表的級別 - 未知。

for (var i=0; i<obj.length;i++) { 
    if (obj[i].id == someOtherVariable) { 
     //we have found it 
    } 
} 

有沒有辦法搜索我的html變量(obj)所有列表元素?

我想補充的是,當我console.log($(myHTMLString));它看起來像這樣:

screenshot

回答

3

是:

var lis = $(myHTMLString).find("li"); 

遍歷它們:

lis.each(function(index, li){ 
    //do your thing. i is the index in the array, li is the li element 
}) 
0

您可以在列表中的所有li

var liElements= $(myHTMLString).find('li'); 
1

只要使用HTML字符串作爲上下文,就可以像平常一樣使用選擇器。試試這個:

$('li', $(myHTMLString)).each(function() { 
    // do something with the li 
}); 
0

以及它不僅li元素我想我會通過分配類選擇走子節點

function searchli(object){ 
for each element in $(this).children() 
{ 
if $(this) is li 
{ 
add to selection; 
} 
call searchli($('this')); 
} 
next element; 
return selection; 
}; 

call searchli($('#list')) 

我會選擇或屬性選擇,並在「主查詢此「再次。所以這基本上是一個遞歸函數,它遍歷初始選擇的每個子節點,儘管它很可能不會以這種方式工作