Pregunta

¿Cómo puedo saber en mi código de activación que preventDefault ¿ha sido llamado?

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

Solución

Trigger () también puede tomar un objeto de evento, por lo que si puede crear un objeto de evento, así:

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

Luego puede verificar después del gatillo para ver si PreventDefault () ha sido llamado así:

var prevented = event.isDefaultPrevented();

Otros consejos

Si pregunta cómo averiguar si se ha prevenido el valor predeterminado o no, use:

event.isDefaultPrevented()

Esto devolverá 'verdadero' o 'falso' en función de si se llamó o no a prevenirdefault ().

EDITAR:http://api.jquery.com/event.isdefaultpreventent/

Los eventos personalizados no tienen algunas acciones predeterminadas que ocurren ... (están personalizadas).

Por otro lado, si desea detener el efecto burbujeante de este evento a otros, eche un vistazo a triggerHandler que no burbujea hasta la jerarquía.

Que yo sepa, la llamada "PreventDefault ()" se trata de evitar las respuestas del navegador nativo a cosas como clics en etiquetas de anclaje o clave en los campos de texto. Una vez que termina el ciclo de manejo del evento, se acabó. Para los eventos inventados, no creo que tenga ningún efecto, ya que se trata del sistema de procesamiento de eventos jQuery y no de la funcionalidad nativa del navegador.

Su código podría establecer algún tipo de bandera en algún lugar para comunicarse con el "mundo exterior".

Editar] Ooh, podría intentar que el controlador guarde una referencia al objeto de evento en algún lugar que el código exterior pueda encontrarlo, y luego verificar externamente con "isDefaultPrevented ()". Sin embargo, no sé si eso funcionaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top