1091 Stimmen

Abrufen der ID des Elements, das ein Ereignis ausgelöst hat

Gibt es eine Möglichkeit, die ID des Elements zu erhalten, das ein Ereignis auslöst?

Ich denke da an etwas wie:

$(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>

Es sei denn natürlich, dass die var test sollte die id enthalten "aaa" wenn das Ereignis vom ersten Formular ausgelöst wird, und "bbb" wenn das Ereignis vom zweiten Formular ausgelöst wird.

26 Stimmen

Ihr Beispiel ist ein wenig merkwürdig. Sie sind ein Klick-Ereignis zu 'a' anhängen, aber haben keine Anker. Ändern Sie es zu $('input.title').click(...) wäre ein wenig klarer für zukünftige Leser Ihrer Frage sein.

3 Stimmen

Sie können verwenden event.target.id im Event-Handler, um die ID des Elements zu erhalten, das ein Ereignis ausgelöst hat.

0 Stimmen

Sie können event als Argument in Ihrer Click-Callback-Funktion und verwenden Sie dann event.target.id

30voto

SMut Punkte 301

Ich generiere eine Tabelle dynamisch aus einer Datenbank, empfange die Daten in JSON und füge sie in eine Tabelle ein. Jede Tabellenzeile hat eine eindeutige ID die für weitere Aktionen benötigt wird. Wenn also das DOM geändert wird, ist ein anderer Ansatz erforderlich:

$("table").delegate("tr", "click", function() {
   var id=$(this).attr('id');
   alert("ID:"+id);  
});

2 Stimmen

Oh ja, das ist es, wonach ich gesucht habe. Es funktioniert auch das gleiche für die neuere "on" seit "Delegate" ist jetzt veraltet. Ich hatte Checkboxen dynamisch aus DB-Daten erstellt, und natürlich hatten sie alle unterschiedliche IDs, die ich brauchte, um etwas zu tun, wenn angeklickt. Ich habe diese Methode hier verwendet, um zu erfahren, welche ID tatsächlich angeklickt wurde. In der alten Schule JS ich nur die ID von jedem Kontrollkästchen in das Kontrollkästchen HTML übergeben, aber kann es nicht tun, dass Weg mit dem jQuery-Ereignishandler-Modell.

26voto

Maciej Sikora Punkte 17478

Element, das ausgelöste Ereignis haben wir in Veranstaltung Eigenschaft

event.currentTarget

Wir erhalten DOM-Knoten Objekt, auf das der Ereignishandler gesetzt wurde.


Die meisten verschachtelten Knoten, die den Bubbling-Prozess gestartet haben, haben wir in

event.target

Das Ereignisobjekt ist immer das erste Attribut des Ereignishandlers, Beispiel:

document.querySelector("someSelector").addEventListener(function(event){

 console.log(event.target);
 console.log(event.currentTarget);

});

Mehr über die Delegation von Veranstaltungen erfahren Sie in http://maciejsikora.com/standard-events-vs-event-delegation/

13voto

Morvael Punkte 3248

Das Quellelement als jQuery-Objekt sollte über

var $el = $(event.target);

Damit erhalten Sie die Quelle des Klicks und nicht das Element, dem die Klickfunktion zugewiesen wurde. Kann nützlich sein, wenn das Klickereignis auf ein übergeordnetes Objekt gerichtet ist z.B. ein Klick-Ereignis auf eine Tabellenzeile, und Sie benötigen die Zelle, auf die geklickt wurde

$("tr").click(function(event){
    var $td = $(event.target);
});

12voto

Cris Punkte 2403

Dies funktioniert bei den meisten Arten von Elementen:

$('selector').on('click',function(e){
    log(e.currentTarget.id);
    });

8voto

Basant Rules Punkte 655

Verwenden Sie können Verwenden Sie .on event

  $("table").on("tr", "click", function() {
                    var id=$(this).attr('id');
                    alert("ID:"+id);  
                });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X