首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带或不带标记的jquery选择器性能类

问带或不带标记的jquery选择器性能类
EN

Stack Overflow用户
提问于 2013-06-12 10:43:59
回答 3查看 102关注 0票数 1

我只想问一下下面哪一个选项更适合与Jquery一起使用

代码语言:javascript
复制
$('#thisontainer div.thisWrapper')

或

代码语言:javascript
复制
$('#thisontainer .thisWrapper')

第二个更快吗?

另外,我很想知道为什么html标签添加到Jquery选择器中会降低性能,我也相信CSS选择器?

谢谢你

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-12 10:46:37

我会做$('#thisontainer').find('.thisWrapper');

http://24ways.org/2011/your-jquery-now-with-less-suck/

票数 4
EN

Stack Overflow用户

发布于 2013-06-12 10:52:35

如果有class属性,请不要将其与标记名一起使用,只需使用类名

看看这个jspref test

票数 2
EN

Stack Overflow用户

发布于 2013-06-12 11:17:40

我认为无论哪种方式都不会有什么显着的区别。

渲染html标签和处理css规则或jQuery选择器是代价高昂的任务,为了保持可接受的性能,必须小心使用它们。我发现,即使是非常简单的CSS规则也会导致严重的性能问题。

所以这里有一些建议:

  1. 无论何时创建CSS规则,都要考虑如何处理它。作为每个节点的背景的动画gif可能会大大降低站点的速度,因为图像必须为每个节点独立处理:*{ background:url(bkg.gif);}
  2. 不是在整个DOM中重复节点搜索,而是在DOM树的已经找到的部分中搜索节点。因此,不是:

对于(var i=0;i< 100;i++) $('#thisontainer .something').somecall();

使用:

var c= $('#thisontainer');c).somecall();

  • Be (var i=0;i< 100;i++) $(‘.thing’,请注意在setInterval或setTimeout调用中对DOM所做的更改。对DOM的更改通常比简单的变量处理代价更高,因此不是将重要的值存储为属性,而是使用jQuery的.data()

将它们存储在javascript对象中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17056906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档