使用.on获取原始元素

时间:2013-11-10 08:12:13

标签: javascript jquery

使用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>

3 个答案:

答案 0 :(得分: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,请参阅控制台日志中的差异)


答案 1 :(得分: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
});

答案 2 :(得分:0)