我在某些链接上使用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)。它能成为什么?
答案 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)