jQuery:如何将event.preventDefault()与自定义事件一起使用?

时间:2010-02-09 14:14:24

标签: jquery custom-events

我如何在触发代码中知道preventDefault已被调用?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();

5 个答案:

答案 0 :(得分:46)

trigger()也可以接受一个事件对象,所以如果你可以创建一个事件对象,如下所示:

var event = jQuery.Event("customEvent");
$(document).trigger(event);

然后你可以在触发后检查,看看是否已经调用了preventDefault():

var prevented = event.isDefaultPrevented();

答案 1 :(得分:1)

如果您询问如何确定是否已阻止默认设置,请使用:

event.isDefaultPrevented()

这将根据是否调用preventDefault()返回'true'或'false'。

编辑: http://api.jquery.com/event.isDefaultPrevented/

答案 2 :(得分:1)

自定义事件没有发生的某些默认操作..(它们是自定义的)。

另一方面,如果你想要阻止这个事件对其他人的冒泡效果,那么看看triggerHandler,它不会冒泡到层次结构..

答案 3 :(得分:0)

据我所知,“preventDefault()”调用是为了阻止本机浏览器对文本字段中锚点标记或按键点击等内容的响应。一旦事件处理周期结束,它就结束了。对于虚构的事件,我认为它根本没有任何影响,因为它是关于jQuery事件处理系统而不是本机浏览器功能。

您的代码可以在某处设置某种标志,以便与“外部世界”进行通信。

[编辑]哦,您可以尝试让处理程序存储对事件对象的引用,该代码可以在外部代码找到它,然后在外部检查“isDefaultPrevented()”。我不知道这是否有用。

答案 4 :(得分:0)

万一有人需要,就像我一样。重要的第二个构造函数参数:

纯JS:

[AN, AK]
[BL, BO]
[CL]
[DO, DL]
[LL]