0

私はslideToggleテクニックを使用して、アプリケーション内の情報でいっぱいの100以上のDIVを表示および非表示にしています。[すべて表示]ボタンと[すべて非表示]ボタンがあり、(すべてを表示および非表示にするだけでなく)slideToggleアニメーションも表示したいと思います。ただし、IE6では、slideToggleを各要素に適用すると、実行速度が非常に遅くなります。

誰かがこれをスピードアップする方法を知っていますか?また、msg_headにあるアイコンを切り替えていますが、速度が低下することはありません。slideToggleを削除して、表示/非表示(すべて表示/すべて非表示)に置き換えると、正常に機能します。でも、できればアニメが欲しいです。

<p class="msg_head" onclick="toggleSelection($(this));">Heading</p>
<div class="msg_body">
   content
</div>

そして、私のすべてを表示し、すべての機能を非表示にします...

function toggleSelection(element) {
    element.next("msg_body").slideToggle(250);
    element.find(":first-child").toggleClass("ui-icon-circle-arrow-s");
    element.find(":first-child").toggleClass("ui-icon-circle-arrow-e");
}

function showall() {
    $(".msg_head").each(function() {
      $(this).next(".msg_body:hidden").slideToggle(250);
      $(this).find(":first-child").attr('class','ui-icon ui-icon-circle-arrow-s');
    });
}

function hideall() {
    $(".msg_head").each(function() {
      $(this).next(".msg_body:visible").slideToggle(250);
      $(this).find(":first-child").attr('class','ui-icon ui-icon-circle-arrow-e');
    });
}

記録のために、個々のtoggleSection()関数は完璧に実行されます。また、showall関数とhideall関数のslideToggleをshowとhideに置き換えることもできます。私は本当に、slideToggleアニメーションを詰まらせずに取得する方法があるかどうかを確認しています。

4

2 に答える 2

0

どのバージョンのjQueryを使用していますか?最新(1.4.1)を使用していない場合は、アップグレードすることを強くお勧めします。jQueryの開発者は、上記のような問題に対処するために、最新バージョンのパフォーマンスを大幅に見直しました。詳細については、リリースノートへのリンクを参照してください:http://jquery14.com/day-01/jquery-14

于 2010-02-17T15:21:59.557 に答える
0

これはあまり役に立ちませんが、ここでは単純な「いいえ」を使用する必要があります。100以上のDIVを同時にアニメーション化するのは少し大変なようですが、訪問者が適切なマシンで最新のブラウザーを実行している場合は、それを回避できる可能性があります。しかし、特にIE6でこれを高速化することを検討している場合は、できることはあまりありません。ブラウザはjavascriptレンダリングエンジンを含めて古く、スムーズできれいに見えながら、やりたいことを実行することはできません。

于 2010-02-17T15:24:46.530 に答える