javascript - 带有 .on 的 jQuery 事件委托(delegate)(此引用)

标签 javascript jquery

在委托(delegate)的 .on 事件中,this 引用在哪里? 示例:

$('#foo').on('click', $('.bar'), function() {
    console.log(this);
});

在示例中,这将引用#foo。但是我如何访问被单击的栏元素?我可能有 5 个栏元素,我想知道点击了哪一个。

谢谢

编辑: 抱歉,我将 #bar 更改为 .bar(因为它存在多次)。

我应该使用“.bar”的答案有帮助。但是如果我有这样的选择器怎么办:

$('.bar').find('a');

我如何合并这样的东西?

这不起作用:(因为这将引用#foo)

$('#foo').on('click', $('.bar').find('a'), function() {
    console.log(this);
});

最佳答案

改成这样...

$('#foo').on('click', '.bar', function() {
    console.log(this);
});

现在this将成为点击的.bar

如果您想要一个 jQuery 对象,请照常使用 $(this)

编辑

根据问题代码的更改,您需要这个...

$('#foo').on('click', '.bar a'), function() {
    console.log(this);
});

这只是将点击事件处理程序扩展到 .bar 元素内的链接,而 document.ready 中可能不存在。

关于javascript - 带有 .on 的 jQuery 事件委托(delegate)(此引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21433023/

相关文章:

javascript - 是否可以更改链接的 href?

javascript - 如何忽略重定向请求中的域?

javascript - 如何将 aps.cer 文件用于 Node.js 的 APN(推送通知)?

javascript - 无论元素是否已使用 jQuery 添加到 DOM,都应用样式

javascript - 获取 iframe 加载元素

使用不同参数执行的 JavaScript 函数

javascript - 在 ng-table 上使用 $http GET 加载的 JSON 数据未显示

jQuery 结合焦点和悬停

javascript - 如何在 if 语句中仅追加一个项目一次?

javascript - javascript中两次百分比之间的差异