【问题标题】:jQuery - Trigger Click Inside a FancyboxjQuery - 在 Fancybox 内触发点击
【发布时间】:2011-12-19 16:54:04
【问题描述】:

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

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

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

在弹出窗口中有一个按钮,点击后会触发一个动作

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

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

});

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

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

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

我怎样才能停止使用 fancybox 的这个问题,以便其他按钮只会触发一次?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    文档:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2023-03-08
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多