【问题标题】:how to disable facebox (jquery)如何禁用facebox(jquery)
【发布时间】:2010-08-11 00:22:10
【问题描述】:

我在某些链接上使用了 Facebook 插件。

我想动态禁用一些链接。所以点击它们不会打开facebox。

我尝试了几种方法来做到这一点,但它们似乎都不起作用。单击链接时,Facebox 仍然有效。

我什至尝试过这个(防止点击和鼠标按下事件),但它仍然没有阻止弹出面框。

$('#who_button').click(function(event) {  event.preventDefault();});
$('#who_button').mousedown(function(event) {  event.preventDefault();});

我能做什么?

编辑:

按照 brad 和 PetersenDidIt 的建议,我尝试了这个:

$('#who_button').click(function(event) { alert ('here');event.stopPropagation(); event.stopImmediatePropagation();});
    $('#who_button').mousedown(function(event) { event.stopPropagation(); event.stopImmediatePropagation();});

仍然没有运气。此外,我看到 facebox 框架出现在警报对话框下。这意味着在我的 click/mousedown 事件甚至被调用之前,facebox 就开始了。

是否可以附加在所有其他事件之前发生的事件?

也许 facebox 使用了另一个事件(不是 click 或 mousedown)。会是什么?

【问题讨论】:

    标签: jquery facebox


    【解决方案1】:

    preventDefault 只是阻止该点击的正常行为(即在链接上重定向)。

    我从未使用过 facebox,所以我不确定它是如何绑定事件的,但您可能想要一些类似的东西:

    event.stopImmediatePropagation()
    

    编辑

    看起来 facebox 使用它自己的自定义事件。您可以在源代码中看到这一点(如下)。所以你最好的选择是解除你的元素与那个事件的绑定:

    $("ele").unbind("click.facebox");
    

    Facebox 公开功能

      $.fn.facebox = function(settings) {
        if ($(this).length == 0) return
    
        init(settings)
    
        function clickHandler() {
          $.facebox.loading(true)
    
          // support for rel="facebox.inline_popup" syntax, to add a class
          // also supports deprecated "facebox[.inline_popup]" syntax
          var klass = this.rel.match(/facebox\[?\.(\w+)\]?/)
          if (klass) klass = klass[1]
    
          fillFaceboxFromHref(this.href, klass)
          return false
        }
    
        return this.bind('click.facebox', clickHandler)
      }
    

    【讨论】:

    • 谢谢布拉德! $("ele").unbind("click.facebox");不起作用,因为此语法需要指定绑定的函数名称。但是: $("#who_button").unbind();似乎运作良好。
    • hmm... 根据文档 (api.jquery.com/unbind),您应该能够只传递事件本身,以取消绑定该特定事件的所有处理程序,并可选择传递特定处理程序绑定到要删除的事件。但是你解除所有事件的绑定当然也应该起作用。
    【解决方案2】:

    【讨论】:

    • 这只会防止在任何父元素上冒泡。如果单击直接绑定到上面引用的元素,它仍然会触发。取决于 Facebox 如何绑定它的事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多