使用jQuery获取叶节点的最有效方法是什么?

Ric*_*rdo 16 jquery

如何从DOM中获取所有叶子节点,比如说div?我想要一个最佳解决方案,如果没有简单而神奇的选择器.我想过使用"reachElem.find('div').length == 0"但我不确定这是不是正确的方向.有任何想法吗?

eHu*_*ain 37

您可以使用以下选择器

$('div:not(:has(*))')
Run Code Online (Sandbox Code Playgroud)

选择器上方将选择所有没有孩子的DIV.


Rom*_*iel 10

如果你真的想要有效的东西,请避免复杂的:not(:has(*))选择器:

$("div").filter(
   function(index) {
      var isLeaf = $(this).children().length === 0;
      return isLeaf;
   }
);
Run Code Online (Sandbox Code Playgroud)

我发现它的效率是eHussain建议的两倍,甚至更快.

  • 比 `.children()` 更快的方法是 `.find(':first')`。 (2认同)