改善jQuery选择器性能的好方法?

改善jQuery选择器性能的好方法?

我正在寻找任何可以改善jQuery调用的选择器性能的方法。特别是这样的事情:

$("div.myclass")不是快$(".myclass")

我认为它可能是,但我不知道jQuery是否足够聪明,首先限制标签名称的搜索等等。任何人对如何制定jQuery选择器字符串以获得最佳性能有任何想法?


饮歌长啸
浏览 423回答 3
3回答

汪汪一只猫

毫无疑问,首先按标记名称进行过滤比按类名过滤要快得多。在所有浏览器本地实现getElementsByClassName之前都会出现这种情况,就像getElementsByTagName的情况一样。

回首忆惘然

在某些情况下,您可以通过限制其上下文来加速查询。如果您有元素引用,则可以将其作为第二个参数传递以限制查询的范围:$(".myclass", a_DOM_element);应该比快$(".myclass");如果你已经有一个_DOM_element并且它明显小于整个文档。

慕勒3428872

正如Reid所说,jQuery是自下而上的。虽然这意味着$('#foo bar div')慢很多$('bar div #foo')这不是重点。如果你有,#foo你不会在选择器中放任何东西,因为ID必须是唯一的。重点是:如果你从带有ID的元素中选择任何东西,那么先选择后面的,然后再使用.find,.children等等:$('#foo').find('div')您最左边(第一)选择的部分可以是效率较低缩放到最右边(最后)的一部分应该是最有效的-这意味着,如果你没有一个ID确保你正在寻找$('div.common[slow*=Search] input.rare'),而不是$('div.rare input.common[name*=slowSearch]')-因为这ISN” t始终适用确保通过相应的分割强制选择器顺序。
打开App,查看更多内容
随时随地看视频慕课网APP