如何禁用facebox(jquery)

如何禁用facebox(jquery),jquery,facebox,Jquery,Facebox,我在某些链接上使用facebox插件 我想动态禁用一些链接。因此,单击它们不会打开facebox 我试过几种方法,但似乎都不管用。当点击链接时,Facebox仍然有效 我甚至尝试过这个(防止点击和鼠标按下事件),但它仍然不能阻止facebox弹出 $('#who_button').click(function(event) { event.preventDefault();}); $('#who_button').mousedown(function(event) { event.preve

我在某些链接上使用facebox插件

我想动态禁用一些链接。因此,单击它们不会打开facebox

我试过几种方法,但似乎都不管用。当点击链接时,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框架出现在警报对话框下。这意味着facebox在调用我的click/mousedown事件之前启动

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


也许facebox使用了另一个事件(不是单击或鼠标向下)。它可能是什么?

尝试

尝试

预防默认设置只会阻止该单击的正常行为(即在链接上重定向)

我从未使用过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)
  }

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)
  }

这只会防止在任何父元素上冒泡。如果单击直接绑定到上面引用的元素,它仍将激发。取决于Facebox绑定其事件的方式。这只会防止在任何父元素上冒泡。如果单击直接绑定到上面引用的元素,它仍将激发。取决于Facebox如何绑定其事件。谢谢你,brad$(“ele”).unbind(“click.facebox”);不起作用,因为此语法需要指定绑定函数名。但是:$(“#谁#按钮”).unbind();看起来效果不错。嗯。。。根据docs(),您应该能够只传入事件本身,取消绑定该特定事件的所有处理程序,并选择传入绑定到要删除的事件的特定处理程序。但是你解开所有事件的束缚当然也应该有效。谢谢你,布拉德$(“ele”).unbind(“click.facebox”);不起作用,因为此语法需要指定绑定函数名。但是:$(“#谁#按钮”).unbind();看起来效果不错。嗯。。。根据docs(),您应该能够只传入事件本身,取消绑定该特定事件的所有处理程序,并选择传入绑定到要删除的事件的特定处理程序。但是,解除所有事件的绑定当然也应该起作用。