首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否重写此jQuery查找选择器?

是否重写此jQuery查找选择器?
EN

Stack Overflow用户
提问于 2012-04-07 08:02:22
回答 2查看 153关注 0票数 0

我在IE中遇到了性能问题,并使用浏览器分析器,我将范围缩小到以下范围:

代码语言:javascript
复制
$tbody.find('> tr:not(.t-grouping-row,.t-detail-row)')

这到底是什么意思,以及关于如何重写它以便在IE中更好地执行的任何想法(如果有意义的话,可能是纯Javascript )?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-07 08:11:40

好了,让我们一起一步一步来看看这意味着什么:

代码语言:javascript
复制
$tbody.find('> tr:not(.t-grouping-row,.t-detail-row)')

$tbody是一个变量。它可能是在那之前定义的。我猜它的名字的意思是“表的tbody标签”。

>的意思是“所有的孩子”。

tr:not(.t-grouping-row,.t-detail-row)'的意思是“所有没有类的tr”,"t-grouping-row“和"t-detail-row”。

所以你的选择器是“在这个tbody中找到所有没有类"t-grouping-row”和"t-detail-row“的TR。

一个更好的选择器应该是:

代码语言:javascript
复制
$('tr:not(.t-grouping-row, .t-detail-row)', $tbody)

但这只会好一点,但仍然很糟糕。你应该检查你的超文本标记语言,看看你想要什么,并使用一个更简单的选择器,比如$('.class', $tbody)

票数 5
EN

Stack Overflow用户

发布于 2012-04-07 08:11:14

我的回答是理论上的。

代码语言:javascript
复制
$tbody.children('tr').filter(function(){
    var that = $(this);
    return (!that.hasClass('t-grouping-row') && !that.hasClass('t-detail-row');
})

.children.find效率更高,因为它需要查看的元素更少,此时sizzle引擎停止(sizzle看起来可能是您的问题)。:not被替换为.filter,它将检查属性而不是选择。

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

https://stackoverflow.com/questions/10050551

复制
相关文章

相似问题

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