2017-02-12 3 views
0
var start = $('#start_img'); 

start.on('click', function(){ 
    var piano = $('.piano'); 
    piano.each(function(index){ 
     $(this).hide().delay(700 * index).fadeIn(700*index); 
     start.off('click'); 
    }) 

}); 

機能jqueryのを停止します。しかし、事実は、私はイベントが実行されている間にイベントリスナーをオフにしたいだけです。イベントがまだ実行されている間は、再度呼び出すことはできません。しかし、イベントが終了すると、私はそれが再び '呼び出し可能'になりたい。誰がどのようにこれを行うか知っていますか?は一時的にあなたは、私が<strong>start.off(「クリック」)が呼ばれた後、再び実行しているからイベントリスナーを停止するには、</strong>メソッドを使用していることがわかります

これ以外のやり方(どちらも動作しません)。誰でも私をここで助けることができますか?もう1つは現在クリアです。

var start = $('#start_img'); 



    start.on('click', function() { 
     var q = 0; 
     var piano = $('.piano'); 
     if (q === 1) { 
     return; // don't do animations 
     } 
     else{ 
     piano.each(function(index) { 
     q = 1; 
     $(this).hide() 
       .delay(700 * index) 
       .fadeIn(700 * index, function() { 
        // remove from each instance when animation completes 
        q = 0 
       }); 

     });} 

    }); 
+0

までfadeInが完了しました – user7548524

答えて

2

あなたにも能動素子にクラスを切り替えることができ、その後、あなたはそれが1つのオブジェクトのみの場合

start.on('click', function() { 
    var piano = $('.piano'); 
    if (piano.hasClass('active')) { 
    return; // don't do animations 
    } 
    piano.each(function(index) { 
    $(this).addClass('active') 
      .hide() 
      .delay(700 * index) 
      .fadeIn(700 * index, function() { 
       // remove from each instance when animation completes 
       $(this).removeClass('active') 
      }); 

    }); 

}); 
+0

お返事ありがとうございます。また、qという名前の変数を使用してこれを行う別の方法についても考えていましたが、うまくいきません。なぜ私に説明することができますか?その例を最初の質問に編集します。 – user7548524

+0

複数の要素があり、最初の要素によって変更され、他の要素がまだアクティブな間に変更される – charlietfl

0

が存在する場合、あなたはグローバル変数を使用することができます何かを、そのクラスをチェックすることができず、このため、私の場合、私はisRunningを使用することがあります:

var start = $('#start_img'); 
var isRunning = false; 

start.on('click', function(){ 
    if (!isRunning){ 
     isRunning = true; 
     var piano = $('.piano'); 
     piano.each(function(index){ 
      $(this).hide().delay(700 * index).fadeIn(700*index, function(){ 
       isRunning = false; 
      }); 
      start.off('click'); 
     }); 
    } 
}); 

後に起こるべきあなたのアプリがisRunning == falseまでコードを実行するべきではありません。この方法で、 10が完了する。

構文:二つ以上のオブジェクトの場合

.fadeIn([duration] [,complete]); 
.fadeIn(options); 
.fadeIn([duration] [,easing] [,complete]); 

、Charlietflの答えは完璧に動作するはずです。

+0

最初にアニメーションを終了すると 'isRunning'がfalseに設定されますが、他の要素は引き続き実行されます – charlietfl

関連する問題

 関連する問題