为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

饮歌长啸 2019-08-27 10:24:09
改善jQuery选择器性能的好方法?我正在寻找任何可以改善jQuery调用的选择器性能的方法。特别是这样的事情:是$("div.myclass")不是快$(".myclass")我认为它可能是,但我不知道jQuery是否足够聪明,首先限制标签名称的搜索等等。任何人对如何制定jQuery选择器字符串以获得最佳性能有任何想法?
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

毫无疑问,首先按标记名称进行过滤比按类过滤要快得多

在所有浏览器本地实现getElementsByClassName之前都会出现这种情况,就像getElementsByTagName的情况一样。


查看完整回答
反对 回复 2019-08-27
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

在某些情况下,您可以通过限制其上下文来加速查询。如果您有元素引用,则可以将其作为第二个参数传递以限制查询的范围:

$(".myclass", a_DOM_element);

应该比快

$(".myclass");

如果你已经有一个_DOM_element并且它明显小于整个文档。


查看完整回答
反对 回复 2019-08-27
?
慕勒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始终适用确保通过相应的分割强制选择器顺序。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 422 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信