0

私は最初の単純なアコーディオンタイプのもの(ネットタットなし)を構築しています、私が持っているjsはこれです:

jQuery(document).ready(function($){

    $('#one').css("height", "25");
    $('#dtwo').css("height", "25"); 
    $('#three').css("height", "25");   
        $('#one').click(function() {
          if ($('#one').hasClass("extended")) {
            $('#one').animate({height: '25px'},500);
            $('#one').removeClass("extended");
            $('#a1').animate({opacity: '1'},500);
          } else {
            $('#one').animate({height: '120px'},500);
            $('#one').addClass("extended");
            $('#a1').animate({opacity: '0'},300);
          }
    });
});

これは問題なく動作します。

ただし、200回のようにクリックすると、200回クリックされますが、どうすればこれを防ぐことができますか?

4

2 に答える 2

3

アニメーションのキューイングについて話している場合は、stop()メソッドを使用できます。このようなもの:

$('#a1').stop(true).animate({opacity: '1'},500);

最初の引数として渡すtrueと、キューがクリアされます。

clearQueueキューに入れられたアニメーションも削除するかどうかを示すブール値。デフォルトはfalseです。

clearQueueブール値が原因でアニメーションが途中で停止するという問題が発生している場合は、stop(true, true)代わりに使用してみてください。

jumpToEnd現在のアニメーションをすぐに完了するかどうかを示すブール値。デフォルトはfalseです。

于 2012-10-25T11:13:00.633 に答える
0

次のようなものを試してください(テストされていませんが、一般的な考え方はわかります)。

if ($('#one').hasClass("extended")) {
        if ($('#one').data("inProgress")) return;
        $('#one').data("inProgress", true);
        $('#one').animate({height: '25px'},500);
        $('#one').removeClass("extended");
        $('#a1').animate({opacity: '1'},500);
        $('#one').data("inProgress", false);
      } else {
        if ($('#one').data("inProgress")) return;
        $('#one').data("inProgress", true);
        $('#one').animate({height: '120px'},500);
        $('#one').addClass("extended");
        $('#a1').animate({opacity: '0'},300);
        $('#one').data("inProgress", false);
      }
于 2012-10-25T11:19:17.517 に答える