2010-05-29 65 views
1

我有一個任意深度的名單,像這樣:如何使用jQuery選擇列表中有孩子的所有元素?

<ul> 
<li></li> 
<li> 
    <ul> 
    <li></li> 
    <li> 
     <ul> 
     <li></li> 
     <li></li> 
     </ul> 
    </li> 
    </ul> 
</li> 

使用jQuery,我怎麼能在這是葉節點列表中選擇每華里。換句話說,我想選擇所有具有兒童UL的li元素。

感謝您的幫助!

回答

2

這裏的另一種選擇:

$('li ul').closest('li') 

這很可能是一個公平位快於:has現代的瀏覽器,因爲它會使用本地querySelectorAll方法上的主要選擇。 :has不能使用本地支持,因爲它不是一個標準的CSS選擇器,而是一個jQuery擴展。

+0

相關提示謝謝。 – Travis 2010-05-29 13:57:59

+0

我試過這個與'$('li:has(ul)');'在Chrome和FF中,後者約快了30%左右。我認爲這不如表面上看起來效率高。無論是否使用本機選擇器引擎,選擇器仍然是以相反的方式解析(AFAIK)...因此,所有'ul'元素都被獲取,然後檢查每個祖先鏈的'li'元素。然後...每個符合'ul'被提交給與'nearest()'相同的例程...... – James 2010-05-29 16:48:43

+0

因此,總結起來,'li ul'很快......但只有當你真的想要'ul'時,元素。對'nearest()'的調用使得這個解決方案比使用':has'更有效率。 – James 2010-05-29 16:50:21

相關問題