Gibt es eine Möglichkeit, die ID des Elements abzurufen, das ein Ereignis auslöst?
Ich denke so 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>
Außer natürlich, dass die Variable test
die ID enthalten sollte "aaa"
, wenn das Ereignis aus dem ersten Formular ausgelöst wird und "bbb"
wenn das Ereignis aus dem zweiten Formular ausgelöst wird.
javascript
jquery
Joda
quelle
quelle
event.target.id
im Ereignishandler die ID des Elements abrufen, das ein Ereignis ausgelöst hat.Antworten:
In jQuery
event.target
bezieht sich immer auf das Element, das das Ereignis ausgelöst hat, wobeievent
der Parameter an die Funktion übergeben wird. http://api.jquery.com/category/events/event-object/Beachten Sie auch, dass dies
this
ebenfalls funktioniert, es sich jedoch nicht um ein jQuery-Objekt handelt. Wenn Sie also eine jQuery-Funktion verwenden möchten, müssen Sie darauf verweisen$(this)
, z.quelle
$(event.target)
wenn Sie eine jQuery-Methode benötigen, z$(event.target).attr("organisation:thingy");
.Versuchen Sie dies als Referenz! Es klappt!
quelle
$(this).attr("id");
tut.e.target
untergeordneten Elementen befindet, genau das Element angeben, durch das das Ereignis ausgelöst wurde, auch wenn es ein untergeordnetesthis
Element war, während Sie das Element erhalten, an das das Ereignis angehängt ist.Obwohl es in anderen Beiträgen erwähnt wird, wollte ich dies formulieren:
$(event.target).id
ist nicht definiert$(event.target)[0].id
gibt das id-Attribut an.event.target.id
gibt auch das id-Attribut an.this.id
gibt das id-Attribut an.und
$(this).id
ist nicht definiert.Die Unterschiede bestehen natürlich zwischen jQuery-Objekten und DOM-Objekten. "id" ist eine DOM-Eigenschaft, daher müssen Sie sich im DOM-Elementobjekt befinden, um sie verwenden zu können.
(Es hat mich gestolpert, also hat es wahrscheinlich jemand anderen gestolpert)
quelle
event.target.id
gibt nichts!$(event.target).attr('selector');
hat perfekt für mich funktioniert.Für alle Ereignisse, nicht nur für jQuery, die Sie verwenden können
Wo dies
event.target
fehlschlägt, wird aufevent.srcElement
IE zurückgegriffen. Zur Verdeutlichung des obigen Codes ist jQuery nicht erforderlich, funktioniert aber auch mit jQuery.quelle
Sie können verwenden,
(this)
um auf das Objekt zu verweisen, das die Funktion ausgelöst hat.'this'
ist ein DOM Element, wenn Sie sich innerhalb einer Rückruffunktion befinden (im Kontext von jQuery) und beispielsweise von den Methoden click, each, bind usw. aufgerufen werden.Hier können Sie mehr erfahren: http://remysharp.com/2007/04/12/jquerys-this-demystified/
quelle
$(html).click()
diese haben, wird das HTML-Objekt und nicht das angeklickte Element zurückgegebenIch generiere eine Tabelle dynamisch aus einer Datenbank, empfange die Daten in JSON und füge sie in eine Tabelle ein. Jede Tabellenzeile hat ein eindeutiges Element
ID
, das für weitere Aktionen benötigt wird. Wenn also das DOM geändert wird, benötigen Sie einen anderen Ansatz:quelle
Element , das Ereignis ausgelöst haben wir in Event Immobilien
Wir erhalten ein DOM-Knotenobjekt , für das der Ereignishandler festgelegt wurde.
Der am meisten verschachtelte Knoten, der den Bubbling-Prozess gestartet hat
Das Ereignisobjekt ist immer das erste Attribut des Ereignishandlers. Beispiel:
Weitere Informationen zur Delegation von Veranstaltungen finden Sie unter http://maciejsikora.com/standard-events-vs-event-delegation/.
quelle
Das Quellelement als jQuery-Objekt sollte über abgerufen werden
Dadurch erhalten Sie die Quelle des Klicks und nicht das Element, dem auch die Klickfunktion zugewiesen wurde. Kann nützlich sein, wenn sich das Klickereignis auf einem übergeordneten Objekt befindet. Ein Klickereignis in einer Tabellenzeile, und Sie benötigen die Zelle, auf die geklickt wurde
quelle
Sie können versuchen, Folgendes zu verwenden:
quelle
Dies funktioniert mit den meisten Arten von Elementen:
quelle
Im Fall von delegierten Ereignishandlern, bei denen Sie möglicherweise Folgendes haben:
und Ihr JS-Code wie folgt:
Sie werden höchstwahrscheinlich feststellen, dass itemId ist
undefined
, da der Inhalt des LI in a eingeschlossen ist<span>
, was bedeutet, dass das<span>
wahrscheinlich das Ereignisziel ist. Sie können dies mit einem kleinen Scheck umgehen, wie folgt:Oder wenn Sie die Lesbarkeit maximieren möchten (und unnötige Wiederholungen von jQuery-Wrapping-Aufrufen vermeiden möchten):
Bei Verwendung der Ereignisdelegierung ist die
.is()
Methode von unschätzbarem Wert, um zu überprüfen, ob Ihr Ereignisziel (unter anderem) tatsächlich das ist, was Sie benötigen. Verwenden Sie.closest(selector)
diese Option, um den DOM-Baum zu durchsuchen, und verwenden Sie ihn.find(selector)
(im Allgemeinen gekoppelt mit.first()
, wie in.find(selector).first()
), um ihn zu durchsuchen. Sie müssen es nicht.first()
verwenden.closest()
, da es nur das erste übereinstimmende Vorfahrenelement.find()
zurückgibt , während alle übereinstimmenden Nachkommen zurückgegeben werden.quelle
Use can Use .on event
quelle
Dies funktioniert bei einem höheren
z-index
als dem in den obigen Antworten genannten Ereignisparameter:Auf diese Weise erhalten Sie immer das Element
id
(in diesem Beispielli
). Auch wenn auf ein untergeordnetes Element des übergeordneten Elements geklickt wird.quelle
JSFiddle hier arbeiten .
quelle
Verwenden Sie einfach die
this
Referenzoder
quelle
id
von dem Elementclick()
abgerufen, für das es zugewiesen wurde. Wenn Sie mehr Daten auf diese Methode übertragen müssen, benötigen Siedata-some-id="<?php $someId; ?>"
und können dann $ (this) .data ("some-id") abrufen.this.element.attr("id")
funktioniert gut in IE8.quelle
Beide Arbeiten,
und
quelle
quelle
Mit der Funktion können Sie die ID und den Wert für das geänderte Element abrufen (in meinem Beispiel habe ich ein Select-Tag verwendet.
quelle
Ich arbeite mit
Ich habe versucht, nach einem
event
wie oben beschrieben zu suchen , aber wenn die Anforderungsfunktion ausgelöst wird, scheint sie nicht verfügbar zu sein. Ich habethis.element.attr("id")
stattdessen die ID des Elements erhalten, und es scheint gut zu funktionieren.quelle
Im Fall von Angular 7.x können Sie das native Element und seine ID oder Eigenschaften abrufen.
html:
quelle