0

我在 IE 中遇到性能问题并使用浏览器分析器,我将其缩小为:

$tbody.find('> tr:not(.t-grouping-row,.t-detail-row)')

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

4

2 回答 2

5

好吧,让我们一步一步地看看这意味着什么:

$tbody.find('> tr:not(.t-grouping-row,.t-detail-row)')

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

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

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

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

更好的选择器如下:

$('tr:not(.t-grouping-row, .t-detail-row)', $tbody)

但这只会好一点,但仍然很糟糕。您应该查看您的 HTML,查看您想要的内容并使用更简单的选择器,例如$('.class', $tbody).

于 2012-04-07T00:11:40.420 回答
1

我的回答是理论上的。

$tbody.children('tr').filter(function(){
    var that = $(this);
    return (!that.hasClass('t-grouping-row') && !that.hasClass('t-detail-row');
})

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

于 2012-04-07T00:11:14.077 回答