1

次のコードを検討してください: http://jsfiddle.net/nzzzH/

Chrome、IE、Firefox の div をクリックして、Opera と比較してみてください

最初にすべての < tr > 要素が一緒に隠されていることに気付くと思いますが、Opera は 1 つずつです。

仕様によると、どの動作が正しいですか? どうすれば 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);
    })
})
4

2 に答える 2

0

行を非表示にして、表示されている行に何らかのスタイルを適用したいだけなら、それらを 1 つのステップで非表示にしてみませんか?

$('div').click(function(){
    $('tr.rows-to-hide').hide();
    $('tr:not(.rows-to-hide)').css('background-color', 'blue');
});

編集 私は3つの例を行いました:

http://jsfiddle.net/nzzzH/8/ ->ループ.hide()each()

http://jsfiddle.net/nzzzH/10/ - >.hide()一気に

http://jsfiddle.net/nzzzH/10/ ->ループ.css('display', 'none')each()

.hide()実際、 in -loopの使用はeach()最も遅いですが、残念ながら、この動作の具体的な理由を見つけることができませんでした.多くの jQuery アニメーションを操作する場合、opera にはパフォーマンスがあると思います. 私のヒントは.hide()、すぐに使用することです。

編集 2 私の推測は正しいと思います:オペラのアニメーションはなぜこんなに遅いのですか?

于 2013-02-20T12:58:33.870 に答える
-1

.hide() を .css({'display':'none'}) に置き換えてみてください:

$('div').click(function(){
    $('tr').each(function(){
        $(this).css({'display':'none'});
    })
})
于 2013-02-20T13:02:02.977 に答える