我有一個任意深度的名單,像這樣:如何使用jQuery選擇列表中有孩子的所有元素?
<ul>
<li></li>
<li>
<ul>
<li></li>
<li>
<ul>
<li></li>
<li></li>
</ul>
</li>
</ul>
</li>
使用jQuery,我怎麼能在這是不葉節點列表中選擇每華里。換句話說,我想選擇所有具有兒童UL的li元素。
感謝您的幫助!
我有一個任意深度的名單,像這樣:如何使用jQuery選擇列表中有孩子的所有元素?
<ul>
<li></li>
<li>
<ul>
<li></li>
<li>
<ul>
<li></li>
<li></li>
</ul>
</li>
</ul>
</li>
使用jQuery,我怎麼能在這是不葉節點列表中選擇每華里。換句話說,我想選擇所有具有兒童UL的li元素。
感謝您的幫助!
jQuery('li:has(ul)');
這裏的另一種選擇:
$('li ul').closest('li')
這很可能是一個公平位快於:has
現代的瀏覽器,因爲它會使用本地querySelectorAll
方法上的主要選擇。 :has
不能使用本地支持,因爲它不是一個標準的CSS選擇器,而是一個jQuery擴展。
相關提示謝謝。 – Travis 2010-05-29 13:57:59
我試過這個與'$('li:has(ul)');'在Chrome和FF中,後者約快了30%左右。我認爲這不如表面上看起來效率高。無論是否使用本機選擇器引擎,選擇器仍然是以相反的方式解析(AFAIK)...因此,所有'ul'元素都被獲取,然後檢查每個祖先鏈的'li'元素。然後...每個符合'ul'被提交給與'nearest()'相同的例程...... – James 2010-05-29 16:48:43
因此,總結起來,'li ul'很快......但只有當你真的想要'ul'時,元素。對'nearest()'的調用使得這個解決方案比使用':has'更有效率。 – James 2010-05-29 16:50:21
美麗。 jQuery再次拯救。 – Travis 2010-05-29 13:38:19