jQuery - 触发器点击Fancybox内部

时间:2011-12-19 16:54:05

标签: javascript jquery jquery-ui jquery-plugins fancybox

我有一个页面会使用

弹出fancybox
$('#showpopup').fancybox().trigger('click');

当用户导航页面时,可能会触发此操作多次(不是一次)。

在弹出窗口中有一个按钮,可在单击时触发操作

$('#mybutton').click(function(){

   $('#otherbutton').trigger('click');

});

当fancybox弹出窗口第一次显示时,我点击#mybutton,#otherbutton将触发一次。

当fancybox弹出窗口显示我第二次单击#mybutton而#otherbutton将触发两次。

当fancybox弹出窗口显示我第三次点击#mybutton而#otherbutton将触发三次......依此类推。

如何使用fancybox停止此问题,以便其他按钮只会触发一次?

1 个答案:

答案 0 :(得分:2)

听起来您正在绑定Fancybox事件(click#mybutton等)中onStart元素的onComplete事件处理程序。)

解决此问题的两种方法是:

  1. onClosedonCleanup个事件中,您可以取消绑定click元素的#mybutton事件处理程序:$('#mybutton').unbind('click');。通过这种方式,只需单击一下,它们就不会累积和激发多次。
  2. 您可以将$('#mybutton').click(function(){$('#otherbutton').trigger('click');});移到任何Fancybox事件处理程序之外(如果在显示Fancybox之前DOM中没有该按钮,那么您可以使用.delegate()绑定click事件处理程序到这个按钮)。 $(document).delegate('#mybutton', 'click', function () {...})(请注意,您可以将document更改为绑定时DOM中存在的任何根元素。
  3. 文档:

    我还注意到您链接到旧版本的Fancybox,如果您使用的是1.x,那么我建议更改为2.0:http://fancyapps.com/fancybox/