css选择器与jquery遍历

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

$("ul>li"); 

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

有没有理由说后者可能更合适? 似乎需要更多代码来获得相同的结果。

对。 速度。 .find()每次都会赢。 加工速度无异于此!

jsPerf速度测试显示我的意思

虽然.find()将获得下属的所有内容(儿童,孩子的孩子,孩子的孩子等),并且>是直接的子选择器。 它是一个更好的苹果对苹果比较以下任何一个:

  • $('ul li') vs $('ul').find('li')
  • $('ul > li') vs $('ul').children('li')

虽然你做.find('li')它仍然是最快的方式,甚至比.find('li')更快。

更新了jsPerf以包含.children .children()

1)它们不一样,第二种forms相当于$("ul li"); 而第一个相当于$("ul").children("li")

2)如果您正在使用第二种forms,则可以简化jQuery的解析任务。 但它会使你的代码变得不那么简单,所以除非你certificate速度与你的情况非常相关,否则我不推荐它。 这就是说你通常有更多的代码,例如一些元素缓存,或其他一些遍历函数,certificate使用find