1

我在某些链接上使用了 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)。会是什么?

4

2 回答 2

1

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

我从来没有使用过facebox,所以我不确定它是如何绑定它的事件的,但你可能想要更多类似的东西:

event.stopImmediatePropagation()

编辑

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

$("ele").unbind("click.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)
  }
于 2010-08-10T15:46:29.390 回答
0

尝试event.stopPropagation()

于 2010-08-10T15:45:30.317 回答