¿Cómo puedo saber en mi código de activación que se ha llamado al preventDefault
?jQuery: ¿Cómo uso event.preventDefault() con eventos personalizados?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
¿Cómo puedo saber en mi código de activación que se ha llamado al preventDefault
?jQuery: ¿Cómo uso event.preventDefault() con eventos personalizados?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
gatillo() también puede tener un objeto de evento, por lo que si se puede crear un objeto de evento, así:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
entonces usted puede comprobar después de que el gatillo para ver Si preventDefault() se ha llamado así: eventos
var prevented = event.isDefaultPrevented();
Wow eso es genial. ¡Aprende algo todos los días! – Pointy
Sí, lo aprendí hoy al buscarlo en la API de jQuery. ¡Entonces todos aprendemos hoy! –
Eso no parece estar documentado (en api.jquery.com al menos) - bueno, no puedo encontrarlo de todos modos. Los documentos están un poco mejor ahora, pero aún me gustaría que sean una wiki. [edit: ok, ahora lo veo en la fuente !!] – Pointy
Que yo sepa el "preventDefault()" llamada se trata de evitar las respuestas navegador nativo a cosas como los clics en las etiquetas de anclaje o las pulsaciones de teclas en los campos de texto. Una vez que el ciclo de manejo de eventos ha terminado, se termina. 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 con el fin de comunicarse con el "mundo exterior".
[ooh] podría intentar que el controlador esconda una referencia al objeto del evento en algún lugar que el código externo pueda encontrar, y luego verifique externamente con "isDefaultPrevented()". No sé si eso funcionaría sin embargo.
Si estás preguntando cómo averiguar si el defecto se ha impedido, utilice:
event.isDefaultPrevented()
Esto devolverá 'verdadero' o 'falso' en función de si o no preventDefault () fue llamado.
personalizadas no tienen algunas acciones predeterminadas que pasa .. (que son por encargo).
Por otro lado, si desea detener el efecto de burbujeo de este evento a los demás a continuación, echar un vistazo a triggerHandler
que no se propaga hacia arriba de la jerarquía ..
si se trata de un evento personalizado .. hay no debe haber ninguna acción predeterminada. –
Todavía es algo que puede usar en su mecanismo de evento si el controlador también se usa para eventos no personalizados. –
Si su evento personalizado es realmente personalizado, ¿qué intenta evitar? Normalmente preventDefault se usa para que el navegador no haga lo normal. El navegador en sí no conoce ni se preocupa por los eventos personalizados. –