0

次のコードを使用して(drupalで)

    ( function ($) {
  Drupal.behaviors.auction_house = {
    attach: function(context,settings) {

      $(document).ready(function(){
        // buy item animation
        $(".buy_item_button").click(function() {
          $(".slide_bags").fadeOut(222).fadeIn(222);
          return false;
        });
        // datagrid
        $('#auction_house_table').dataTable();   
      });

    }
  };
})(jQuery);

クリックするとイベントが発生し、もう一度クリックすると、イベントが 2 回、次に 3 回、次に 4 回、というように発生します。では、これを「積み上げ」と呼びましょう。重要な情報: リンクを含むコンテンツは、onclick 関数がアタッチされ、ajax を介して読み込まれます。

これはどのように発生する可能性があり、どうすればこれを防ぐことができますか?

4

1 に答える 1

1

'click'イベントを複数回バインドしていると思います(ajaxコンテンツがロードされたときなど)。unbind再度バインドする前にイベントを確認するか、再バインドする前にイベントが既にバインドされているかどうかを確認できます。

イベントをバインドする前にバインドを解除します。

$(".buy_item_button").unbind('click').click(function() {
    //your code...
});

さらに、イベントが既に要素にバインドされているかどうかを確認する には、このリンクを参照してください。

clickしかし、最善の方法は、イベントを最新の追加コンテンツのみにバインドすることだと思います。.buy_item_buttonそのため、イベントをセレクターに直接バインドする代わりに、クラスfindを持つ新しいコンテンツと子を選択できます。.buy_item_button

$("#new-content").find(".buy_item_button").click(function() {
    //your code...
});
于 2013-02-17T18:54:40.727 に答える