如何禁用facebox(jquery)
我在某些链接上使用facebox插件 我想动态禁用一些链接。因此,单击它们不会打开facebox 我试过几种方法,但似乎都不管用。当点击链接时,Facebox仍然有效 我甚至尝试过这个(防止点击和鼠标按下事件),但它仍然不能阻止facebox弹出如何禁用facebox(jquery),jquery,facebox,Jquery,Facebox,我在某些链接上使用facebox插件 我想动态禁用一些链接。因此,单击它们不会打开facebox 我试过几种方法,但似乎都不管用。当点击链接时,Facebox仍然有效 我甚至尝试过这个(防止点击和鼠标按下事件),但它仍然不能阻止facebox弹出 $('#who_button').click(function(event) { event.preventDefault();}); $('#who_button').mousedown(function(event) { event.preve
$('#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框架出现在警报对话框下。这意味着facebox在调用我的click/mousedown事件之前启动
是否可以附加在所有其他事件之前发生的事件
也许facebox使用了另一个事件(不是单击或鼠标向下)。它可能是什么?尝试尝试预防默认设置只会阻止该单击的正常行为(即在链接上重定向) 我从未使用过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)
}
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)
}
这只会防止在任何父元素上冒泡。如果单击直接绑定到上面引用的元素,它仍将激发。取决于Facebox绑定其事件的方式。这只会防止在任何父元素上冒泡。如果单击直接绑定到上面引用的元素,它仍将激发。取决于Facebox如何绑定其事件。谢谢你,brad$(“ele”).unbind(“click.facebox”);不起作用,因为此语法需要指定绑定函数名。但是:$(“#谁#按钮”).unbind();看起来效果不错。嗯。。。根据docs(),您应该能够只传入事件本身,取消绑定该特定事件的所有处理程序,并选择传入绑定到要删除的事件的特定处理程序。但是你解开所有事件的束缚当然也应该有效。谢谢你,布拉德$(“ele”).unbind(“click.facebox”);不起作用,因为此语法需要指定绑定函数名。但是:$(“#谁#按钮”).unbind();看起来效果不错。嗯。。。根据docs(),您应该能够只传入事件本身,取消绑定该特定事件的所有处理程序,并选择传入绑定到要删除的事件的特定处理程序。但是,解除所有事件的绑定当然也应该起作用。