jquery单击事件被堆叠和执行

时间:2013-02-17 18:24:30

标签: jquery drupal

使用以下代码(在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加载。

这怎么可能发生?如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

我猜你是多次绑定'click'事件(当加载ajax内容时)。您可以在再次绑定事件之前unbind事件,或者在重新绑定之前检查事件是否已经绑定:

绑定事件前取消绑定:

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

此外,请参阅 this link 以检查事件是否已绑定到元素。

但我认为最好的方法是将click事件仅绑定到最新添加的内容。因此,不要将事件直接绑定到.buy_item_button选择器;您可以选择新内容和find .buy_item_button班级的孩子:

$("#new-content").find(".buy_item_button").click(function() {
    //your code...
});