我在IE中遇到了性能问题,并使用浏览器分析器,我将范围缩小到以下范围:
$tbody.find('> tr:not(.t-grouping-row,.t-detail-row)')这到底是什么意思,以及关于如何重写它以便在IE中更好地执行的任何想法(如果有意义的话,可能是纯Javascript )?
发布于 2012-04-07 08:11:40
好了,让我们一起一步一步来看看这意味着什么:
$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。
一个更好的选择器应该是:
$('tr:not(.t-grouping-row, .t-detail-row)', $tbody)但这只会好一点,但仍然很糟糕。你应该检查你的超文本标记语言,看看你想要什么,并使用一个更简单的选择器,比如$('.class', $tbody)。
发布于 2012-04-07 08:11:14
我的回答是理论上的。
$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,它将检查属性而不是选择。
https://stackoverflow.com/questions/10050551
复制相似问题