javascript - Opera 隐藏行时不会卡住表

标签 javascript jquery html-table cross-browser opera

考虑以下代码: http://jsfiddle.net/nzzzH/

尝试在Chrome、IE、Firefox中点击div,然后与Opera进行比较

你可以注意到,一开始所有元素都是一起隐藏的,但是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/

相关文章:

javascript - 如何在单击输入时从对象中过滤数据?

javascript - 查看 youtube.com 时,我可以从 Chrome Dev Console 控制视频吗?

jquery - 猫头鹰旋转木马未出现

javascript - 定期向 google script web 应用程序发送数据

javascript - jQuery 循环遍历表格来显示值

html - CSS/HTML 中没有可见宽度的侧边栏

javascript - 无法将隐藏的表列排除在导出为 CSV 之外?

javascript - 如何使用 AngularJS 获得没有滚动条大小的宽度?

javascript - 如何使用 javascript 更改元素 css 类运行时

javascript - 使用 Javascript 将行插入表