考虑以下代码: http://jsfiddle.net/nzzzH/
尝试在Chrome、IE、Firefox中点击div,然后与Opera进行比较
你可以注意到,一开始所有
根据规范,哪种行为是正确的? 如何强制 Opera 像其他浏览器一样运行?
代码:
<div> click </div>
<table>
<tr><td>a</td></tr>
<tr><td>b</td></tr>
<tr><td>c</td></tr>
<tr><td>d</td></tr>
<tr><td>e</td></tr>
</table>
var sleep = function (ms) {
var unixtime_ms = new Date().getTime();
while(new Date().getTime() < unixtime_ms + ms) {}
}
$('div').click(function(){
$('tr').each(function(){
$(this).hide();
sleep(200);
})
})
最佳答案
因此,如果您只想隐藏行并向可见行应用某种样式,为什么不一步隐藏它们呢?
$('div').click(function(){
$('tr.rows-to-hide').hide();
$('tr:not(.rows-to-hide)').css('background-color', 'blue');
});
编辑 我做了三个例子:
http://jsfiddle.net/nzzzH/8/ -> each()
-循环中的.hide()
http://jsfiddle.net/nzzzH/10/ -> .hide()
立即
http://jsfiddle.net/nzzzH/10/ -> each()
-loop
.css('display', 'none')
所以确实在 each()
循环中使用 .hide()
是迄今为止最慢的,不幸的是我无法找出具体原因对于这种行为,我的猜测是 Opera 在处理大量 jQuery 动画时具有一定的性能。我的提示是立即使用 .hide()
。
编辑2 我认为我的猜测是正确的:Why is opera animation so slow?
关于javascript - Opera 隐藏行时不会卡住表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980087/