改善jQuery选择器性能的好方法?我正在寻找任何可以改善jQuery调用的选择器性能的方法。特别是这样的事情:是$("div.myclass")不是快$(".myclass")我认为它可能是,但我不知道jQuery是否足够聪明,首先限制标签名称的搜索等等。任何人对如何制定jQuery选择器字符串以获得最佳性能有任何想法?
3 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
毫无疑问,首先按标记名称进行过滤比按类名过滤要快得多。
在所有浏览器本地实现getElementsByClassName之前都会出现这种情况,就像getElementsByTagName的情况一样。
回首忆惘然
TA贡献1847条经验 获得超11个赞
在某些情况下,您可以通过限制其上下文来加速查询。如果您有元素引用,则可以将其作为第二个参数传递以限制查询的范围:
$(".myclass", a_DOM_element);
应该比快
$(".myclass");
如果你已经有一个_DOM_element并且它明显小于整个文档。
慕勒3428872
TA贡献1848条经验 获得超6个赞
正如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始终适用确保通过相应的分割强制选择器顺序。
添加回答
举报
0/150
提交
取消