如何在我的触发代码中知道preventDefault
已被调用?jQuery:如何将event.preventDefault()与自定义事件一起使用?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
如何在我的触发代码中知道preventDefault
已被调用?jQuery:如何将event.preventDefault()与自定义事件一起使用?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
触发()也可以采取一个事件对象,因此,如果您可以创建一个事件对象,像这样:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
,那么你可以检查后触发看如果preventDefault()被如此调用:
var prevented = event.isDefaultPrevented();
据我所知,“的preventDefault()”调用有关防止本机浏览器响应之类的文本字段中的锚标记上或按键点击。一旦事件处理周期结束,它就结束了。对于弥补事件,我认为它没有任何影响,因为它全部关于jQuery事件处理系统,而不是关于本地浏览器功能。
您的代码可能会在某处设置某种标志以便与“外部世界”进行通信。
ooh你可以尝试让处理程序在事件对象的某个地方隐藏一个引用,让外部代码可以找到它,然后在外部检查“isDefaultPrevented()”。但我不知道这是否可行。
如果你问如何找出默认是否已被阻止,使用:
event.isDefaultPrevented()
这将基于与否的preventDefault返回“真”或“假”( ) 被称为。
自定义事件没有发生某些默认操作(它们是自定义的)。
在另一方面,如果你想停止这个事件给他人的冒泡效果,然后看看triggerHandler
不冒泡的层次..
,如果它是一个自定义事件..有应该不是默认操作。 – 2010-02-09 14:20:58
如果处理程序也用于非自定义事件,它仍然可以用于事件机制。 – 2010-02-09 15:02:29
如果你的自定义事件真的是自定义的,那么你想要防止什么?通常使用preventDefault,以便浏览器不会执行正常的操作。浏览器本身不知道或关心自定义事件。 – 2010-02-09 14:20:10