как отключить фейсбокс (jquery) - PullRequest
1 голос
/ 10 августа 2010

Я использую плагин 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 ]

1 голос
/ 10 августа 2010

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

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

event.stopImmediatePropagation()

EDIT

Похоже, что 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)
  }
0 голосов
/ 10 августа 2010

Попробуйте event.stopPropagation ()

...