2016-09-20 21 views
1

私はサイドメニューを開くための次のスクリプトを持っています。 メニューが1行ずつ開きます。 しかし、メニューボタンをすばやくクリックすると、アニメーションが形成されます。 これをどうやって止めることができますか?以前は.stop(true)と.finish()で試してみましたが、目的の効果は得られませんでした。私はおそらく何か間違っているので、私はjQueryを初めて使っています。jQueryのアニメーションの蓄積を停止するにはどうすればよいですか?

 var s = 0; 
     var navMenu = document.getElementById("nav_menu"); 
     var navBtn = document.getElementById("btn"); 
     var speed = 100; 

      function menuOpen() { 
       if (s==0){ 

        $("#nav_menu").scrollTop(0); 
        navBtn.classList.add('close'); 
        navMenu.style.zIndex = "4"; 
        navMenu.style.overflowY = 'auto'; 

        $('ul').each(function() { 
         $(this).children().each(function(i) { 
          $(this).delay(i * speed).animate({ 
           left: 0 
          }); 
         }); 
        }); 

        s++; 

        $("li").promise().done(function() { 
         navMenu.style.zIndex = "4"; 
         navMenu.style.overflowY = 'auto'; 
        }); 

       } else { 

        navBtn.classList.remove('close'); 


        $('ul').each(function() { 
         $(this).children().each(function(i) { 
          $(this).delay(i * speed).animate({ 
           left: "100%" 
          }); 

         }); 
        }); 

        s=0; 

        $("li").promise().done(function() { 
         navMenu.style.zIndex = "0"; 
         navMenu.style.overflowY = 'hidden'; 
        }); 


       }; 

      }; 

可能であれば、回答を説明してください。 ありがとう

答えて

0

はい、アニメーションはjQueryのstop()メソッドで停止する必要があります。コードを確認してください。最初stop()を呼び出す必要があり、その後、高速応答のためのanimate()

$(this).stop().animate({left: 0},i * speed); 

$(this).stop().animate({left: "100%"},i * speed); 
+0

こんにちは感謝を呼び出す必要があります。しかし、これは機能しません。 アニメーションループが壊れます。アニメーションを停止します。しかし、私がボタンをクリックした時まで走っていた場所だけ。それらは折りたたまれますが、残りの行は一緒に開いています。 – user1306732

+0

jsfiddleでコードを追加してリンクを提供できますか? –

+0

Jsfiddleでアニメーションが表示されないので、ここにファイルをアップロードしました: http://mgolan.com/temp/menu/ デモでCSSアニメーションで達成しようとしている効果を作成できましたここに:http://stackoverflow.com/questions/39485115/how-can-i-identify-when-theopening-closing-css-animation-ends-with-javascript これは他の問題があります – user1306732

関連する問題