0

わかりましたので、タブを前後にスライド/展開し、滑らかに見えるアニメーションメニューを作成しています。クリックしたタブにアタッチしている animationend イベントのバインドを解除する以外は、すべて機能しています。ほとんどの場合、タブをクリックすると、アニメーションの最後にリスナーがアタッチされ、次のタブをクリックすると、リスナーを以前にクリックしたタブにバインド解除したいと考えています。しかし、何らかの理由で .off 関数を起動できません。ここに私のコードがあります

var $featuredTab = this.$('.featured'),
    $tabContainer = $(e.target).parent(),
    $menu = this.$el,
    index = $tabContainer.index(),
    count = $tabContainer.parent().children().length; 

    if($featuredTab.length > 0) {
        $menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $featuredTab, function() {
            console.log('off');
            //do stuff
        });
    }

    $tabContainer.addClass('featured');


    $menu.on('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $tabContainer, function(e) {
            console.log(e.originalEvent);
            //do stuff
    });

オフイベントが発生しない理由について何か考えはありますか?

4

2 に答える 2

0

off()イベントをトリガーしないため。

このoff()メソッドは、でアタッチされたイベントハンドラーを削除し.on()ます。

以前にメニューに添付されていたイベントのバインドを解除したいようです。

// this removes ALL events
$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd');

イベントのみを削除する場合は、ドキュメントからこの例を参照してください。

于 2012-04-03T20:11:23.350 に答える
0

2 番目のパラメーターをセレクターとして扱っていると仮定すると、on間違って使用しています。2 番目のパラメーターは、オブジェクトを渡すセレクター (文字列) です。2 番目 (セレクター) と 3 番目 (データ) パラメーターはオプションです。

ここを見てください - http://api.jquery.com/on/

ただし、これを試すことができます。

$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd');
于 2012-04-03T19:58:19.907 に答える