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>
4

3 回答 3

3

...有没有办法检索调用 .on 的元素以及调用事件的元素?

如果您想知道事件附加到哪个元素,可以使用event.delegateTarget

您可以像这样使用它:

$(".item").on("click", "a", function (event) {
    var link = $(this); // a tag
    var itemDiv = event.delegateTarget;
    console.log(itemDiv);
});

演示- 使用 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,请参阅控制台日志中的差异)


于 2013-11-10T08:23:38.850 回答
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
});
于 2013-11-10T08:14:47.940 回答
0

你可以使用.parent()函数....

看到这个教程链接:

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

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

于 2013-11-10T08:22:59.343 回答