如何禁用facebox(jquery)

时间:2010-08-10 15:37:23

标签: jquery facebox

我在某些链接上使用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在我的click / mousedown事件被调用之前就开始了。

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

也许facebox使用另一个事件(不是点击或mousedown)。它能成为什么?

2 个答案:

答案 0 :(得分: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)
  }

答案 1 :(得分:0)