Как отключить фейсбокс (jquery)

Я использую плагин Facebox по определенным ссылкам.

Я хочу отключить некоторые ссылки динамически. поэтому щелкнув по ним, вы не откроете фейсбокс.

Я попробовал несколько способов сделать это, но ни один из них, кажется, не работает. Facebox по-прежнему работает при нажатии на ссылки.

Я даже попробовал это (предотвратить события щелчка и мыши), но он все еще не отключает всплывающее окно.

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

Что я могу сделать?

РЕДАКТИРОВАТЬ:

Следуя совету Брэда и Петерсена, я попробовал это:

$('#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 ответа

Решение

protectDefault просто предотвращает нормальное поведение этого клика (то есть перенаправление на ссылку).

Я никогда не использовал 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)
  }
Другие вопросы по тегам