0
1

More than 1 year has passed since last update.

ボタンの連続入力防止方法

Posted at

トグルメニューを実装した時に、連続クリックすると、遅れてクリックした回数分アニメーションが再生してしまう不具合がありましたので、その対策を紹介します。

<dl class="toggle">
  <dt>開閉ボタン</dt>
  <dd style="display:none;">
    <li>開閉コンテンツリスト<br>
    開閉コンテンツリスト2
  </li></dd>
</dl>
$(function(){
  $('.toggle dt').click(function(){
    $(this).next().slideToggle(600);
  });
});

上のコードで連続クリックするとその回数だけアニメーションが保存され、遅れて何回もアニメーションしてしまいます。

$(function(){
  $('.toggle dt').click(function(){
    $(this).next().stop(true, false).slideToggle(600);
  });
});

上のコードは.stop(true, false)を追加しました。これで連続クリックすると、現在のアニメーションを途中で中断して次のアニメーションに移行する動きをします。

$(function(){
  $('.toggle dt').click(function(){
    if($(this).next().not(':animated').length >= 1){
      $(this).next().slideToggle(600);
    }
  });
});

2つ目はアニメーションする要素(開閉するコンテンツ)が動作していないときだけ、開閉する動作をします。つまりクリックすると、0.6秒のデッドタイムがあります。

個人サイトでも、企業サイトでも連続動作するサイトをちらほら見かけますよね。ひと工夫するだけでこの不具合は解消されるので、みんなもやってみよう!

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1