9

使用 jquery 似乎有两种方法可以在 DOM 内的无序列表中查找列表项。

$("ul>li");

$("ul").find("li"); 

为什么后者可能更可取?似乎需要更多代码才能获得相同的结果。

4

2 回答 2

12

是的。速度。.find()每次都会赢。和处理速度无异!

jsPerf 速度测试来说明我的意思

虽然.find()会得到所有属于下属的东西(孩子、孩子的孩子、孩子的孩子等),并且>是直接的孩子选择器。比较以下任何一项都是更好的苹果对苹果:

  • $('ul li')对比$('ul').find('li')
  • $('ul > li')对比$('ul').children('li')

虽然如果你这样做.find('li'),它仍然是最快的方法,甚至比.children('li').

更新了 jsPerf 以包含.children()

于 2013-04-30T20:28:28.323 回答
1

1)它们不一样,第二种形式等同于$("ul li");,第一种形式等同于$("ul").children("li")

2) 如果您使用第二种形式,您可以简化 jQuery 的解析任务。但这会使您的代码不那么简单,因此除非您证明速度与您的情况非常相关,否则我不会推荐它。话虽这么说,您通常有更多代码,例如一些元素缓存或一些其他遍历函数,证明使用find.

于 2013-04-30T20:28:14.553 回答