Czy jest jakiś sposób na uzyskanie identyfikatora elementu, który uruchamia zdarzenie?
Myślę o czymś takim:
$(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>
Z wyjątkiem oczywiście tego, że var test
powinien zawierać identyfikator "aaa"
, jeśli zdarzenie jest uruchamiane z pierwszej formy, i "bbb"
jeśli zdarzenie jest uruchamiane z drugiej postaci.
javascript
jquery
Joda
źródło
źródło
event.target.id
module obsługi zdarzeń można użyć, aby uzyskać identyfikator elementu, który wywołał zdarzenie.Odpowiedzi:
W jQuery
event.target
zawsze odnosi się do elementu, który wywołał zdarzenie, gdzieevent
parametr jest przekazywany do funkcji. http://api.jquery.com/category/events/event-object/Zauważ też, że
this
to również zadziała, ale nie jest to obiekt jQuery, więc jeśli chcesz użyć na nim funkcji jQuery, musisz się do niego odwołać$(this)
np .:źródło
$(event.target)
jeśli potrzebujesz metody jQuery, np$(event.target).attr("organisation:thingy");
.W celach informacyjnych spróbuj tego! To działa!
źródło
$(this).attr("id");
robi.e.target
poda dokładny element, który spowodował uruchomienie zdarzenia, nawet jeśli było to dziecko, athis
element, do którego zdarzenie jest dołączone.Chociaż jest to wspomniane w innych postach, chciałem to przeliterować:
$(event.target).id
jest niezdefiniowany$(event.target)[0].id
daje atrybut id.event.target.id
daje również atrybut id.this.id
daje atrybut id.i
$(this).id
jest niezdefiniowany.Różnice dotyczą oczywiście obiektów jQuery i obiektów DOM. „id” jest właściwością DOM, więc aby go użyć, musisz być w obiekcie elementu DOM.
(Potknęło mnie to, więc prawdopodobnie potknęło się o kogoś innego)
źródło
event.target.id
nic nie daje!$(event.target).attr('selector');
działało dla mnie idealnie.Dla wszystkich zdarzeń, nie ograniczając się tylko do jQuery, którego możesz użyć
W przypadku
event.target
niepowodzenia wracaevent.srcElement
do IE. Wyjaśnienie powyższego kodu nie wymaga jQuery, ale działa również z jQuery.źródło
Można użyć
(this)
do odwołania do obiektu, który uruchomił funkcję.'this'
jest elementem DOM, gdy znajdujesz się w funkcji wywołania zwrotnego (w kontekście jQuery), na przykład wywoływana metodami click, each, bind itp.Tutaj możesz dowiedzieć się więcej: http://remysharp.com/2007/04/12/jquerys-this-demystified/
źródło
$(html).click()
(this), zwróci obiekt HTML, a nie kliknięty elementDynamicznie generuję tabelę z bazy danych, odbieram dane w JSON i umieszczam je w tabeli. Każdy wiersz tabeli ma unikalny element
ID
, który jest potrzebny do dalszych działań, więc jeśli DOM zostanie zmieniony, potrzebujesz innego podejścia:źródło
Element, który wywołał zdarzenie, które mamy we właściwości zdarzenia
Otrzymujemy obiekt węzła DOM, dla którego ustawiono obsługę zdarzeń.
Najczęściej zagnieżdżony węzeł, w którym rozpoczęliśmy proces propagacji
Obiekt zdarzenia jest zawsze pierwszym atrybutem modułu obsługi zdarzeń, przykład:
Więcej informacji na temat delegowania wydarzeń można znaleźć na stronie http://maciejsikora.com/standard-events-vs-event-delegation/
źródło
Element źródłowy jako obiekt jQuery powinien być uzyskany poprzez
Otrzymasz źródło kliknięcia, a nie element, do którego przypisano funkcję kliknięcia. Może być przydatny, gdy zdarzenie click znajduje się na obiekcie nadrzędnym EG. Zdarzenie click w wierszu tabeli i potrzebujesz klikniętej komórki
źródło
Możesz spróbować użyć:
źródło
działa to z większością typów elementów:
źródło
W przypadku obsługi zdarzeń delegowanych, gdzie możesz mieć coś takiego:
i twój kod JS tak:
Prawdopodobnie zauważysz, że itemId jest
undefined
, ponieważ zawartość LI jest owinięta w<span>
, co oznacza, że<span>
prawdopodobnie będzie to cel zdarzenia. Możesz obejść ten problem za pomocą małego czeku, takiego jak:Lub, jeśli wolisz zmaksymalizować czytelność (a także uniknąć niepotrzebnego powtarzania wywołań zawijania jQuery):
Podczas korzystania z delegowania zdarzeń
.is()
metoda ta jest nieoceniona w celu sprawdzenia, czy cel zdarzenia (między innymi) jest faktycznie tym, czego potrzebujesz. Użyj,.closest(selector)
aby wyszukać drzewo DOM i użyj.find(selector)
(zwykle w połączeniu z.first()
, jak w.find(selector).first()
), aby przeszukać to drzewo . Nie musisz używać.first()
podczas używania.closest()
, ponieważ zwraca tylko pierwszy pasujący element przodka, podczas gdy.find()
zwraca wszystkich pasujących potomków.źródło
Use może użyć. Na zdarzenie
źródło
Działa to
z-index
w przypadku parametru zdarzenia wyższego niż wspomniany w powyższych odpowiedziach:W ten sposób zawsze otrzymasz
id
element (w tym przykładzieli
). Również po kliknięciu elementu potomnego elementu nadrzędnego ..źródło
JSFiddle robocza tutaj .
źródło
Po prostu skorzystaj z
this
referencjilub
źródło
id
z elementu, do któregoclick()
został przypisany. Jeśli potrzebujesz przenieść więcej danych do tej metody, potrzebujesz,data-some-id="<?php $someId; ?>"
a następnie możesz `$ (this) .data (" some-id "), aby je odzyskać.this.element.attr("id")
działa dobrze w IE8.źródło
Obie te prace
i
źródło
źródło
Możesz użyć tej funkcji, aby uzyskać identyfikator i wartość zmienionego elementu (w moim przykładzie użyłem tagu Select.
źródło
Pracuję z
Próbowałem znaleźć
event
opisany powyżej sposób, ale kiedy uruchamia się funkcja żądania, wydaje się, że nie jest dostępna. Kiedyśthis.element.attr("id")
, aby uzyskać identyfikator elementu zamiast, i wydaje się działać prawidłowo.źródło
W przypadku Angulara 7.x można uzyskać element macierzysty oraz jego identyfikator lub właściwości.
HTML:
źródło