在委托(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/