javascript - jQuery - 在 Fancybox 中触发点击

标签 javascript jquery jquery-ui jquery-plugins fancybox

我有一个页面会弹出 fancybox使用

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

当用户浏览页面时,这可能会被触发多次(不是一次)弹出。

在弹出窗口中有一个按钮,单击它会触发一个 Action

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

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

});

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

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

当 fancybox 弹出窗口第三次显示时,我单击 #mybutton 和 #otherbutton 将触发三次...等等。

我怎样才能用 fancybox 解决这个问题,让 otherbutton 只触发一次?

最佳答案

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

解决这个问题的两种方法是:

  1. onClosedonCleanup 事件中,您可以取消绑定(bind) #mybutton 元素的 click 事件处理程序: $('#mybutton').unbind('click');.这样一来,它们就不会堆积起来并在单击一次时触发多次。
  2. 您可以将 $('#mybutton').click(function(){$('#otherbutton').trigger('click');}); 移到任何 Fancybox 事件处理程序之外(如果在显示 Fancybox 之前按钮不存在于 DOM 中,那么您可以使用 .delegate()click 事件处理程序绑定(bind)到此按钮)。 $(document).delegate('#mybutton', 'click', function () {...})(请注意,您可以将 document 更改为任何根元素绑定(bind)时存在于 DOM 中)。

文档:

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

关于javascript - jQuery - 在 Fancybox 中触发点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564652/

相关文章:

javascript - "to"不是 expect jest/valid-expect 的有效属性

JavaScript 框架和 Java EE

javascript - 当插入符号在文本上处于事件状态时,markjs.io 和 TinyMCE 书 checkout 现问题

javascript - Node.js 中的本地文件出现 404 错误

Javascript 创建 HTML 对象与创建 HTML 字符串

jquery - 如何隐藏Thickbox中的loadingAnimation.gif...?

jQuery jail 插件和图像加载有时不起作用

jquery - 隐藏不具有特定类别的表行

javascript - 为什么 jQuery Datepicker 在输入数字并按下回车键时选择今天的日期?

javascript - 合并多个 div,然后撤消合并