Estoy tratando de encontrar el jQuery equivalente de este método de JavaScript llamada:
document.addEventListener('click', select_element, true);
He llegado tan lejos como:
$(document).click(select_element);
pero que no logra el mismo resultado, como el último parámetro del método JavaScript – un valor booleano que indica si el controlador de eventos se debe ejecutar en la captura o la fase de propagación (por mi entendimiento de http://www.quirksmode.org/js/events_advanced.html) – se ha dejado fuera.
¿Cómo se especifica el parámetro, o de lo contrario lograr la misma funcionalidad, el uso de jQuery?
- Captura de eventos no es compatible con jQuery, como la captura de eventos no es compatible con IE, que jQuery soporta 😉 que estás buscando es decir la compatibilidad?
- Gracias, la media luna Fresco – creo que tiene sentido ahora. Necesito IE de compatibilidad, así que supongo que hay que olvidarse de la captura de fase.
No todos los navegadores soportan la captura de eventos (por ejemplo, las versiones de Internet Explorer menor que 9 no), pero todos admiten la propagación de los eventos, por lo que es la fase utilizan para enlazar a los controladores de eventos en todos los cross-browser abstracciones, jQuery incluido.
La más cercana a lo que usted está buscando en jQuery es el uso de
bind()
(sustituida poren()
en jQuery 1.7+) o el caso específico de métodos jQuery (en este caso,haga clic en()
, que llama abind()
internamente de todos modos). Todo el uso de la fase de propagación de un elevado evento.Como de jQuery 1.7,
.on()
es ahora el método preferido de los eventos de unión, en lugar de.bind()
:De http://api.jquery.com/bind/:
La página de documentación se encuentra en
http://api.jquery.com/on/
La cosa más cercana sería la función de enlace:
http://api.jquery.com/bind/
Una cosa a tener en cuenta es que los eventos de jQuery métodos no fuego/trampa
load
enembed
etiquetas que contienen SVG DOM que se carga como un documento separado en elembed
etiqueta. La única manera que he encontrado para atrapar a unload
evento en que estos eran para su uso en crudo, JavaScript.Esto no funciona (he probado
on
/bind
/load
métodos):Sin embargo, esto funciona:
$img
?Ahora deberá utilizar el
.on()
función para enlazar eventos.Aquí es un excelente tratamiento en el Mozilla Red de Desarrollo (MDN) de este problema para el estándar de JavaScript (si usted no desea depender de jQuery o que se entienda mejor, en general):
https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener
Aquí hay una discusión de flujo de eventos de un enlace en el anterior tratamiento:
http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
Algunos puntos clave son: