代码之家  ›  专栏  ›  技术社区  ›  thorn0

jQuery:如何将event.preventDefault()用于自定义事件?

  •  34
  • thorn0  · 技术社区  · 15 年前

    我怎么能在我的触发码里知道 preventDefault 有人打过电话吗?

    $(document).trigger('customEvent', params);
    if (/* ??? */)
        doDefaultActions();
    
    4 回复  |  直到 10 年前
        1
  •  48
  •   Dave Van den Eynde    15 年前

    trigger()还可以获取事件对象,因此如果您可以创建事件对象,如下所示:

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

    然后,您可以在触发器之后检查preventDefault()是否被这样调用:

    var prevented = event.isDefaultPrevented();
    
        2
  •  1
  •   user113716    15 年前

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

    event.isDefaultPrevented()

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

        3
  •  1
  •   Gabriele Petrioli    15 年前

    另一方面,如果你想阻止这个事件对其他人的泡沫效应,那么看看 triggerHandler 但这并没有上升到层次结构。。

        4
  •  1
  •   Bitterblue    5 年前

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

    纯JS:

    var event = new CustomEvent("close", { "cancelable": true });
    // now event listeners can prevent default behavior
    element.onclose(event);
    // or: element.dispatchEvent(event);
    
    if (!event.defaultPrevented)
        defaultBehavior();
    
        5
  •  0
  •   Pointy    15 年前

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

    [edit]ooh您可以尝试让处理程序将对事件对象的引用隐藏在外部代码可以找到它的地方,然后使用“isDefaultPrevented()”进行外部检查。我不知道这是否管用。