2

一連のラジオ ボタンのクリック イベントに続く手順を処理する無名関数があります。

この関数内でいくつかのアニメーションが発生します。関数内から再び発生するのを防ぐために、関数が終了するまでクリック イベントを無効にしたいと考えています。

この関数は、各ラジオ ボタンに共通のクラス名を呼び出します。

$(".question1").click( function(){  

関数がアニメーションを実行している間、このクラス要素のクリックイベントを無効にし、完了後に元に戻すにはどうすればよいですか?

これを実現するために removeClass() と addClass() を試しましたが、関数内では機能しないようです。

私も .off() と .on() を試してみましたが、うまくいきませんでした。

ラジオ ボタン自体は関数内で無効になっていますが、関数はクラス名で呼び出されるため、クリック イベントは引き続き発生します。

どうもありがとう。

4

3 に答える 3

0

クリックボタンを無効にして、アニメーションの完了後に再度有効にすることができます。

$(".question1").click( function(){ 
   var that = this; 
 $(this).attr('disabled','disabled');
 $('.anim_div').animate({
    opacity: 0.25,
    left: '+=50',
    height: 'toggle'
   }, 5000, function() {
        $(that).attr('disabled',false);
 });
});

http://api.jquery.com/animate/

複数のアニメーションの場合、すべてのアニメーションが完了したことを検出するために、遅延の使用を検討できます。

于 2012-10-24T23:19:28.747 に答える
0

私は別のルートに行きます.要素がアニメーション化されているかどうかクリックハンドラーをチェックインし、その場合は、次のように:animatedセレクターを使用する必要があることを確認します:

$(".question1").click( function(){
   if ( $('#element').is(':animated') ) {
      return;
   }
   //rest of code
});
于 2012-10-24T22:41:26.597 に答える
0

何か問題があるに違いない... オン/オフ機能は非常にうまく機能し、クラスセレクターも機能します。

コードを入れていただけますか?私たちが助けようとすることができるように、フィドルとして与えてください。

コードを教えていただけない場合は、次のことを試みます。

// triggered only if the class is not disable
$(".question1:not(:disabled)").on('click', function(){
    // do something...
});

また

function theClick(){
    $(".question1").on('click', function(){
        // do something...
    });
}
function theAnimation(){
    $("#someId").on('click', function(){
        $(".question1").off('click'); // disable the click
        // do some animation
        // do more...
        // and more...
        theClick(); // finish, so re-enable
    });
}
于 2012-10-26T19:19:59.383 に答える