Ato dos controladores de eventos en este enlace:
<a href='#' id='elm'>Show Alert</a>
JavaScript:
$(function()
{
$('#elm').click(_f);
$('#elm').mouseover(_m);
});
function _f(){alert('clicked');}
function _m(){alert('mouse over');}
¿Hay alguna forma de obtener una lista de todos los eventos vinculados a un elemento, en este caso, al elemento con id="elm"
?
javascript
jquery
javascript-events
Praveen Prasad
fuente
fuente
$._data(element[0], ‘events’);
$._data()
es utilizado por JQuery interno.$.data()
Es el método público para el usuario. Y$.data(element, 'events')
funciona bien.Caso general:
Sources
pestañaEvent Listener Breakpoints
y expanda el árbolDel mismo modo, puedes:
Inspect element
"event listeners
'.fuente
Estoy agregando esto para la posteridad; Hay una manera más fácil que no implica escribir más JS. Usando el increíble complemento firebug para firefox ,
fuente
Ahora puede simplemente obtener una lista de oyentes de eventos vinculados a un objeto mediante la función javascript getEventListeners ().
Por ejemplo, escriba lo siguiente en la consola de herramientas de desarrollo:
fuente
El complemento del complemento jQuery Audit debería permitirle hacerlo a través de las herramientas normales de desarrollo de Chrome. No es perfecto, pero debería permitirle ver el controlador real vinculado al elemento / evento y no solo al controlador genérico jQuery.
fuente
Si bien esto no es exactamente específico para los selectores / objetos jQuery, en FireFox Quantum 58.x, puede encontrar controladores de eventos en un elemento utilizando las herramientas de desarrollo:
fuente
Usé algo como esto si ($ ._ data ($ ("a.wine-item-link") [0]). Events == null) {... hace algo, vincula sus controladores de eventos nuevamente} para verificar si mi elemento está vinculado a algún evento. Todavía dirá indefinido (nulo) si ha desconectado todos los controladores de eventos de ese elemento. Esa es la razón por la que estoy evaluando esto en una expresión if.
fuente
Tenga en cuenta que los eventos se pueden adjuntar al documento en sí en lugar del elemento en cuestión. En ese caso, querrás usar:
Y encuentre el evento con el selector correcto :
Y luego mira el controlador > [[FunctionLocation]]
fuente
Cuando paso una pequeña consulta DOM compleja a $ ._ datos como este:
$._data($('#outerWrap .innerWrap ul li:last a'), 'events')
se arroja indefinido en la consola del navegador.Así que tuve que usar $ ._ data en el div padre:
$._data($('#outerWrap')[0], 'events')
para ver los eventos para las etiquetas a. Aquí hay un JSFiddle para lo mismo: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/fuente
$('#outerWrap')
. Los eventos están realmente vinculados a ese elemento en lugar de los anclajes individuales.