とあるシステムで、メニューの開閉を改修しています。
現在は、クリック連打対応としてフラグを用意し、
animate開始時にフラグON、animate完了時にフラグOFFにすることで
連打を回避しましたが、テストの際に上がってきた要望として
「アニメーション処理が80%進んだ時点でクリックを受け付ける」
ようにしてほしいということでした。
animateに秒数を指定し、setTimeOutでフラグOFFすることで
出来るかと思いテストしましたが、うまく動きません。
(クリックした時点でOFFになっていました)
どなたか解決方法よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
オプションのstepを使うといいと思いますね。
HTML
1<button>clickMe</button> 2<div></div> 3<span></span>
javascript
1var flag=true; 2$('button').on('click',e=>{ 3 if (flag) { 4 $('div').stop().css({width:0}); 5 $('div').animate({width:100},{ 6 duration:5000, 7 step: (now, fx)=>{ 8 $('span').text(now); 9 if (now>80&&!flag) console.log(flag=true) 10 } 11 }) 12 flag = false; 13 } 14});
投稿2016/11/11 03:50
総合スコア36115
0
具体的なanimate処理のトリガーと実行を例示してください
またスピードはミリ秒単位で指示してください
#追記
以下、一定時間waitをかけるサンプルを提示します。
わかりやすいようにトリガーになるdivに色をつけてあります。
赤いボタンを押すと水色に変わり水色の間はボタンを押せません。
一定時間立つと水色から赤に戻ります。
speed(ミリ秒)とratio(経過した比率)でスピードは調整してください
HTML
1<style type="text/css"> 2#button { 3 float: left; 4 background-color: red; 5 height: 50px; 6 width: 50px; 7} 8#ani { 9 float: left; 10 background-color: silver; 11 height: 50px; 12 width: 500px; 13} 14</style> 15<script src="js/jquery.js"></script> <!--ライブラリは適当に--> 16<script> 17$(function(){ 18 var speed=1000; 19 var ratio=0.8; 20 var flg=true; 21 $('#button').on('click',function(){ 22 if(flg==false) return false; 23 $.when( 24 setTimeout(function(){ 25 $('#ani').animate( { width: 'toggle',}, { duration: speed, easing: 'swing', } ); 26 $('#button').css({"background-Color":"aqua"}); 27 flg=false; 28 },0), 29 wait(speed*ratio)) 30 .done( 31 function(){ 32 flg=true; 33 $('#button').css({"background-Color":"red"}) 34 } 35 ) 36 }); 37}); 38function wait(speed) { 39 var d = $.Deferred(); 40 setTimeout(function(){d.resolve();}, speed); 41 return d.promise(); 42} 43</script> 44<div id="button"></div> 45<div id="ani" style="display: block;"></div> 46<div style="clear: both;"></div> 47
ただしanimateが終わる前にwait処理が終わるので
徐々にボタンが押せるタイミングが速くなってきます
仕様は悩みどころですね・・・
投稿2016/11/11 02:32
編集2016/11/11 03:27総合スコア114843
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 03:28
2016/11/11 06:36
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 03:51
2016/11/11 06:33