Как отключить фейсбокс (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)
}