При использовании делегирования событий jQuery есть способ получить элемент, на который был вызван.on, а также элемент, на котором было вызвано событие?
JQuery:
$(".item").on("click","a",function() {
var link = $(this); // a tag
var itemDiv = // what?
});
HTML:
<div class="item">
<a href="#">Link</a>
<a href="#">Link</a>
<a href="#">Link</a>
<a href="#">Link</a>
</div>
... есть способ извлечь элемент, на который был вызван.on, а также элемент, на котором было вызвано событие?
Если вы хотите узнать, к какому элементу присоединяется событие, вы можете использовать event.delegateTarget.
Вы можете использовать его так:
$(".item").on("click", "a", function (event) {
var link = $(this); // a tag
var itemDiv = event.delegateTarget;
console.log(itemDiv);
});
DEMO - Использование event.delegateTarget
Я не совсем уверен, что понимаю вторую часть вопроса, но если вы хотите узнать точный элемент, инициировавший событие, вы можете использовать event.target.
Я не уверен, что это то, что вы имели в виду, но на всякий случай я добавил пример ниже.
Вы можете использовать его так:
$(".item").on("click", "a", function (event) {
var link = $(this); // a tag
var initiatedBy = event.target;
console.log(initiatedBy);
});
Это пригодится, если у вас есть, скажем, span
внутри вашей ссылки или аналогичный, и вам нужно проверить, какой именно элемент нажал.
Это также может пригодиться, если вы хотите присоединить событие к контейнеру, но не хотите запускать какие-либо события внутри него, если не щелкнуть точный элемент внутри него.
DEMO - проверка элемента, инициировавшего событие (вторая ссылка содержит span
, см. Разницу в журнале консоли)
вы можете использовать функцию.parent()....
см. ссылки на репетиторы:
http://www.w3schools.com/jquery/traversing_parent.asp
http://coursesweb.net/jquery/jquery-parent-children-nth-child
Попробуй это:
$(".item").on("click","a",function() {
var link = $(this); //the element on which the event was called
var itemDiv = $(this).closest(".item"); //the element on which on was called
});