0

アニメーションの発生中にリスト項目がクリックされないようにしています。したがって、クリック ハンドラーの上部で、次のようなことを行いたいと考えています。

if(!$(this).is(:animated)) {
    // handle click code here
}

上記の if ステートメントの 'bang' (!) に注意してください。テストはしていませんが、これでうまくいくと思います。私が確信していないのは、「.is(:animated)」が、fadeIn() および fadeOut() によってアニメーション化されている要素に対して実行されたときに true を返すかどうかです。jQuery には .animate() 関数があることは知っています。その関数を使用してアニメーション化された要素に対して :animated が確実に機能すると思いますが、fadeIn() および fadeOut() を使用する要素でも機能しますか? ありがとう。

更新:いくつかの劇的な誤投稿の後、すべてがうまくいっているように見えます。すべての素晴らしいフォローアップと編集の返信者に感謝します. 最終的に、jQuery ソースは .animate() を使用してこれらの効果を実現しているため、:animated は、fadeIn() および fadeOut() を使用してアニメーション化された要素と一致することがわかりました。私の最終チェックは、最初に投稿されたとおりでした:

if(!$(this).is(:animated)) {
    // handle click code here
}

..いくつかの例で提案されているように .not() を使用するのではなく (ただし、これらは現在投稿されているとおりに機能すると思います)。再度、感謝します。

4

3 に答える 3

2

:animatefadeOut呼び出された要素と一致します。

jQuery ソースを見ると、fadeOut単純にanimate.
次のように定義されています。

// Generate shortcuts for custom animations
jQuery.each({
    slideDown: genFx("show", 1),
    slideUp: genFx("hide", 1),
    slideToggle: genFx("toggle", 1),
    fadeIn: { opacity: "show" },
    fadeOut: { opacity: "hide" }
}, function( name, props ){
    jQuery.fn[ name ] = function( speed, callback ){
        return this.animate( props, speed, callback );
    };
});
于 2009-11-29T20:20:24.150 に答える
2

はい、:animatedjQuery が作成するあらゆる種類のアニメーションに対して true を返します。animateまた、jQuery関数を使用する場合、アニメーション化するプラグインに対しても実行されます。

ただし、jQuery を利用するために、ほんの少しだけ別の方法でコードを記述することができます。

編集not関数は の反対ではありませんis。ノードを除外しますが、評価される jQuery オブジェクトを返しますtruenot最初に提案したように関数を使用する.lengthには、テストに追加する必要があります。

if( $(this).not(':animated').length ) {
    // Handle click code here
}

それ以外の場合は、最初に投稿された OP として関数を使用します。

if( !$(this).is(':animated')) {
    // Handle click code here
}
于 2009-11-29T20:24:44.077 に答える
0

そこに if ステートメントを入れる必要はまったくありません。「クリックコード」の前に .not(':animated') をチェーンできます。

例として、これらのフェードは、div がアニメーション化されていない場合にのみ機能するため、厄介なキューの問題が解消されます。

$('a#show_me').toggle(function() {
    $('div#the_money').not(':animated').fadeIn();
}, function() {
    $('div#the_money').not(':animated').fadeOut();
});

.click() でも同じように機能します。

于 2010-09-27T01:43:56.183 に答える