javascript - metodo - Listar todos los enlaces de un elemento(con jQuery)
simulate click jquery (6)
¿Hay una manera de enumerar todos los enlaces en un elemento jQuery? El enlace de jQuery () solo parece adjuntarlos y no encontré una función jQuery que obtenga los enlaces.
A partir de jQuery 1.8, la nueva sintaxis es:
$.each($._data("#element", "events"), function(i, e) {
console.log(i, e);
});
Tenga en cuenta que es $._data("#element"
NO $.data($("#element")
, así que asegúrese de desenvolver su selector si necesita usar $myJQuerySelector[0]
.
Debe haber una forma de hacerlo programáticamente, y alguien lo ha descubierto y puesto en una herramienta visual.
No estoy seguro de si esto responde a su pregunta, pero he encontrado que la mejor herramienta para determinar estos enlaces se llama Evento Visual (no es un gran nombre, en realidad es muy difícil de buscar en Google).
Esto funciona en Firefox y Chrome, Chromium, Safari, etc. Algunos problemas de enlace pueden ocurrir de manera diferente en diferentes navegadores. Es bueno cubrir todas las bases.
Si tiene una superposición y necesita meterse debajo de un elemento, puede hacer doble clic en cualquier enlace para ocultarlo y llegar al evento que necesita ver.
El siguiente código analiza un elemento y todos sus elementos secundarios y console.logs cualquier evento vinculado.
function findMyEvents(me) {
if (typeof $._data($(me)[0], ''events'') !== "undefined") {
console.log($(me)[0])
console.log($._data($(me)[0], ''events''))
$._data($(me)[0], ''events'')
};
for (var i = 0; i < $(me).children().length; i++) {
findMyEvents($(me).children()[i])
}
}
findMyEvents(''body'')
No puedo hacer que la respuesta de Grinn funcione. Desde jQuery 1.8 encontrar controladores de eventos , creo que el ejemplo debería cambiarse a
var obj = $(''#element'');
$.each($._data(obj[0], "events"), function(i, e) {
console.log(i, e);
});
Basado en las otras respuestas y comentarios.
JQuery 1.8 y superior
var elementSelector = ''#element-id'';
$(elementSelector).bind(''click.test'', function(){}); // For testing.
$.each($._data($(elementSelector)[0], ''events''), function(i, e) {
console.log(i, e);
});
El primer argumento de $._data()
no es un objeto jQuery.
Tenga en cuenta que esta no es una interfaz pública compatible ; Las estructuras de datos reales pueden cambiar incompatiblemente de una versión a otra. - Jquery 1.8 Realeased
A continuación JQuery 1.8
var elementSelector = ''#elementid'';
$(elementSelector).bind(''click.test'', function(){}); // For testing.
$.each($(elementSelector).data(''events''), function(i, e) {
console.log(i, e);
});
En la versión 1.6, jQuery separó sus datos internos de los datos del usuario para evitar colisiones de nombres. Sin embargo, algunas personas estaban utilizando la estructura de datos de "eventos" no documentados internos, por lo que hicimos posible recuperarlos a través de .data (). Esto se elimina en 1.8.- Jquery 1.8 Realeased
Esta respuesta se aplica a la versión jQuery <1.8
La mejor manera de hacerlo, probablemente el plugin de FireQuery
para FireFox. Realmente una herramienta limpia.
Si desea / necesita realizar ese "código", use el objeto jdys .data(''events'')
.
$.each($(''#element'').data(''events''), function(i, e) {
console.log(i, e);
});
Todos los eventos vinculados a través de jQuery se insertan en ese objeto. Por supuesto, también puede haber otros manejadores de eventos como on
-anything, para los que tendría que verificar explícitamente.
Ref .: FireQuery