Получить оригинальный элемент, используя .on

0

При использовании делегирования событий 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>
  • 0
    $ (Это) .parent ( 'DIV')
  • 0
    Это просто его родитель.
Показать ещё 1 комментарий
Теги:

3 ответа

3
Лучший ответ

... есть способ извлечь элемент, на который был вызван.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, см. Разницу в журнале консоли)


0

вы можете использовать функцию.parent()....

см. ссылки на репетиторы:

http://www.w3schools.com/jquery/traversing_parent.asp

http://coursesweb.net/jquery/jquery-parent-children-nth-child

0

Попробуй это:

$(".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
});
  • 0
    Код является лишь примером. .item может быть вложен в несколько уровней. Я не хочу найти его, если у меня есть ссылка на него
  • 0
    @RGraham Я обновил ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню