在jquery中,似乎有两种方法可以在DOM中的无序列表中找到列表项。css选择器vs jQuery遍历
$("ul>li");
和
$("ul").find("li");
有没有为什么,后者可能是更理想的一个原因?似乎需要更多代码才能获得相同的结果。
在jquery中,似乎有两种方法可以在DOM中的无序列表中找到列表项。css选择器vs jQuery遍历
$("ul>li");
和
$("ul").find("li");
有没有为什么,后者可能是更理想的一个原因?似乎需要更多代码才能获得相同的结果。
是。速度。每次都会赢得.find()
。加工速度无异于!
jsPerf speed test to show what I mean
虽然.find()
将获得一切,这是一个下级(孩子的孩子,孩子,孩子的孩子,等子女),并且>
是直接孩子选择。它是一个更好的苹果对苹果比较下列任一:
$('ul li')
VS $('ul').find('li')
$('ul > li')
VS $('ul').children('li')
但如果你做.find('li')
它仍然是最快的方法这样做,甚至比.children('li')
快。
1)他们是不一样的,第二种形式将相当于$("ul li");
,第一个是相当于$("ul").children("li")
2)如果你使用第二种形式,可以简化jQuery的解析任务。但是它使你的代码更简单,所以我不会推荐它,除非你证明速度与你的情况非常相关。这就是说,你通常有更多的代码,例如一些元素缓存或其他遍历函数,证明使用find
。
'find'选择所有匹配派生元素,'>'是直接子选择。这表明你还没有阅读jQuery文档。 – undefined 2013-04-30 20:28:38
你错了。 '$(“ul> li”)'只会找到所有'ul'的第一个'li',其中'$(“ul”)。find(“li”)'将在每个'ul'中找到所有'li' 。你的意思是在第一种情况下:'$(“ul li”)'对吗? – WooCaSh 2013-04-30 20:28:53
*取决于*。在大多数情况下,试图根据性能来决定使用哪个版本是过时的优化,所以在大多数情况下,选择更易维护和/或易于阅读/理解的版本更有意义,而不必担心哪一版本更快。 – 2013-04-30 20:29:18