我有一个页面会使用
弹出fancybox$('#showpopup').fancybox().trigger('click');
当用户导航页面时,可能会触发此操作多次(不是一次)。
在弹出窗口中有一个按钮,可在单击时触发操作
$('#mybutton').click(function(){
$('#otherbutton').trigger('click');
});
当fancybox弹出窗口第一次显示时,我点击#mybutton,#otherbutton将触发一次。
当fancybox弹出窗口显示我第二次单击#mybutton而#otherbutton将触发两次。
当fancybox弹出窗口显示我第三次点击#mybutton而#otherbutton将触发三次......依此类推。
如何使用fancybox停止此问题,以便其他按钮只会触发一次?
答案 0 :(得分:2)
听起来您正在绑定Fancybox事件(click
,#mybutton
等)中onStart
元素的onComplete
事件处理程序。)
解决此问题的两种方法是:
onClosed
或onCleanup
个事件中,您可以取消绑定click
元素的#mybutton
事件处理程序:$('#mybutton').unbind('click');
。通过这种方式,只需单击一下,它们就不会累积和激发多次。$('#mybutton').click(function(){$('#otherbutton').trigger('click');});
移到任何Fancybox事件处理程序之外(如果在显示Fancybox之前DOM中没有该按钮,那么您可以使用.delegate()
绑定click
事件处理程序到这个按钮)。 $(document).delegate('#mybutton', 'click', function () {...})
(请注意,您可以将document
更改为绑定时DOM中存在的任何根元素。文档:
.unbind()
:http://api.jquery.com/unbind .delegate
:http://api.jquery.com/delegate 我还注意到您链接到旧版本的Fancybox,如果您使用的是1.x,那么我建议更改为2.0:http://fancyapps.com/fancybox/