我有一个任意深度的名单,像这样:如何使用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