来自自定义函数

时间:2015-11-20 22:58:13

标签: jquery

我使用自定义功能:

function youtubeload() {
      $(".youtube").each(function() {
        $(document).on('click', '#' + this.id, function() {
          ...
        }); 
      }); 
};

我这样称呼这个函数:

$(document).ready(function() {youtubeload();});

在colorbox ajax popup之后我再次调用该函数,因此可以在新加载的元素上使用它,如下所示:

//cbox_complete is colorobox event hook    
$(document).bind('cbox_complete', function(){
    youtubeload();
    });

现在,关闭模态窗口后,我有一个问题,重复触发器(单击后,该函数被触发两次。)我试图解除单击事件,如下所示:

//cbox_closed is colorbox event hook
    $(document).bind('cbox_closed', function() {
    $(document).unbind('click');
    });

但它不起作用。如何取消绑定事件,因此没有重复的触发器?谢谢。

1 个答案:

答案 0 :(得分:0)

$(document).unbind('click')将取消绑定所有元素上的所有点击事件。您只需解除触发事件的元素的绑定。使用$(this)来定位该元素。这将解决unbind问题。

$(document).bind('cbox_closed', function() {
    $(this).unbind('click');
    });

但是有了这个,你需要再次将click事件绑定到该元素。

要避免所有的hassels,只需使用.on事件将click处理程序委托给动态创建的元素。

$(document).on("click",'cbox_complete', function(){
    youtubeload();
 });