javascript - 使用 .on 获取原始元素

标签 javascript jquery

当使用jQuery的事件委托(delegate)时,有没有办法检索调用.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>

最佳答案

...is there a way to retrieve the element on which .on was called, as well as the element on which the event was called?

如果您想知道事件附加到哪个元素,可以使用 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,请参阅控制台日志中的差异)

<小时/>

关于javascript - 使用 .on 获取原始元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887591/

相关文章:

javascript - jquery 验证允许输入 user1 到 user100 之间的代码

javascript - 如何在多个 Angular 2 项目之间共享一个 Angular 2 组件?

javascript - 如果验证未通过如何不提交表单

javascript - 将一个文本字段中的列表构建到另一个文本字段中,然后选择从列表中删除项目

javascript - 高质量缩放 <canvas> drawImage()

javascript - scrollTop 的问题 - 30 秒应该持续,29 秒停留在一个地方

javascript - 如何从查看源代码中隐藏我的 js 文件和 js 库

javascript - Laravel - 让 vue 与其他插件一起工作

javascript - 单击单选按钮时显示/隐藏 div

javascript - Bootstrap 使 webkit 转换不起作用