¿Hay alguna forma de obtener la ID del elemento que dispara un evento?
Estoy pensando algo como:
$(document).ready(function() {
$("a").click(function() {
var test = caller.id;
alert(test.val());
});
});
<script type="text/javascript" src="starterkit/jquery.js"></script>
<form class="item" id="aaa">
<input class="title"></input>
</form>
<form class="item" id="bbb">
<input class="title"></input>
</form>
Excepto, por supuesto, que la var test
debe contener la identificación "aaa"
, si el evento se dispara desde el primer formulario y "bbb"
, si el evento se dispara desde el segundo formulario.
javascript
jquery
Joda
fuente
fuente
event.target.id
controlador de eventos para obtener la identificación del elemento que activó un evento.Respuestas:
En jQuery
event.target
siempre se refiere al elemento que activó el evento, donde seevent
pasa el parámetro a la función. http://api.jquery.com/category/events/event-object/Tenga en cuenta también que
this
también funcionará, pero que no es un objeto jQuery, por lo que si desea utilizar una función jQuery, debe referirse a él como$(this)
, por ejemplo:fuente
$(event.target)
si necesita un método jQuery, por ejemplo,$(event.target).attr("organisation:thingy");
.Como referencia, prueba esto! ¡Funciona!
fuente
$(this).attr("id");
hace.e.target
secundarios,this
le dará el elemento exacto que provocó la activación del evento incluso si era un elemento secundario, mientras que le dará el elemento al que está asociado el evento.Aunque se menciona en otras publicaciones, quería explicar esto:
$(event.target).id
es indefinido$(event.target)[0].id
da el atributo id.event.target.id
también le da el atributo id.this.id
da el atributo id.y
$(this).id
es indefinido.Las diferencias, por supuesto, están entre los objetos jQuery y los objetos DOM. "id" es una propiedad DOM, por lo que debe estar en el objeto elemento DOM para usarlo.
(Me hizo tropezar, así que probablemente tropezó con alguien más)
fuente
event.target.id
no da nada!$(event.target).attr('selector');
Funcionó perfectamente para mí.Para todos los eventos, no solo se limita a jQuery que puede usar
Donde
event.target
falla, vuelve a funcionarevent.srcElement
para IE. Para aclarar el código anterior no requiere jQuery pero también funciona con jQuery.fuente
Puede usar
(this)
para hacer referencia al objeto que activó la función.'this'
es un DOM elemento cuando se encuentra dentro de una función de devolución de llamada (en el contexto de jQuery), por ejemplo, al ser llamado por los métodos click, each, bind, etc.Aquí es donde puede obtener más información: http://remysharp.com/2007/04/12/jquerys-this-demystified/
fuente
$(html).click()
(esto) devolverá el objeto html y no el elementoGenero una tabla dinámicamente en una base de datos, recibo los datos en JSON y los pongo en una tabla. Cada fila de la tabla tiene un carácter único
ID
, que es necesario para otras acciones, por lo tanto, si se modifica el DOM, necesita un enfoque diferente:fuente
Elemento que disparó el evento que tenemos en la propiedad del evento
Obtenemos el objeto del nodo DOM en el que se configuró el controlador de eventos.
El nodo más anidado que comenzó el proceso de burbujeo que tenemos en
El objeto de evento siempre es el primer atributo del controlador de eventos, por ejemplo:
Más información sobre la delegación de eventos Puede leer en http://maciejsikora.com/standard-events-vs-event-delegation/
fuente
El elemento fuente como un objeto jQuery debe obtenerse a través de
Esto le proporciona la fuente del clic, en lugar del elemento al que también se le asignó la función de clic. Puede ser útil cuando el evento de clic está en un objeto primario, por ejemplo, un evento de clic en una fila de la tabla, y necesita la celda en la que se hizo clic
fuente
Puedes intentar usar:
fuente
esto funciona con la mayoría de los tipos de elementos:
fuente
En el caso de los controladores de eventos delegados, donde podría tener algo como esto:
y tu código JS así:
Lo más probable es que encuentre ese itemId
undefined
, ya que el contenido del LI está envuelto en un<span>
, lo que significa<span>
que probablemente será el objetivo del evento. Puede solucionar esto con un pequeño cheque, así:O, si prefiere maximizar la legibilidad (y también evitar la repetición innecesaria de llamadas de ajuste jQuery):
Cuando se utiliza la delegación de eventos, el
.is()
método es invaluable para verificar que el objetivo de su evento (entre otras cosas) sea realmente lo que necesita. Use.closest(selector)
para buscar el árbol DOM y use.find(selector)
(generalmente junto con.first()
, como en.find(selector).first()
) para buscarlo. No es necesario usar.first()
cuando se utiliza.closest()
, ya que sólo devuelve el primer elemento antecesor juego, mientras que.find()
los retornos todos los descendientes coincidentes.fuente
Use can Use .on event
fuente
Esto funciona en un
z-index
parámetro superior al evento mencionado en las respuestas anteriores:De esta manera, siempre obtendrá
id
el elemento (en este ejemploli
). También cuando se hace clic en un elemento hijo del padre ...fuente
Trabajando JSFiddle aquí .
fuente
Solo usa la
this
referenciao
fuente
id
del elemento dondeclick()
se ha asignado. Si necesita transferir más datos a ese método, necesitadata-some-id="<?php $someId; ?>"
y luego puede `$ (this) .data (" some-id ") para recuperarlo.this.element.attr("id")
funciona bien en IE8.fuente
Ambos de estos trabajos,
y
fuente
fuente
Puede usar la función para obtener la identificación y el valor del elemento modificado (en mi ejemplo, he usado una etiqueta Seleccionar).
fuente
Estoy trabajando con
Intenté buscar uno
event
como se describió anteriormente, pero cuando se activa la función de solicitud, no parece estar disponible. Solíathis.element.attr("id")
obtener la identificación del elemento, y parece funcionar bien.fuente
En el caso de Angular 7.x puede obtener el elemento nativo y su id o propiedades.
html:
fuente