<分区>
$("body").on('click', 'ul#ajax-users-list>li', () => {
console.log( $(this).data('id') );
});
此代码返回 undefined
,因为 $(this)
= [Window]
。
如何访问触发点击事件的元素的数据属性?
标签 javascript jquery dom
<分区>
$("body").on('click', 'ul#ajax-users-list>li', () => {
console.log( $(this).data('id') );
});
此代码返回 undefined
,因为 $(this)
= [Window]
。
如何访问触发点击事件的元素的数据属性?
最佳答案
问题是因为您使用的是箭头函数,因此处理函数的范围将保留在定义级别。如果您使用传统的匿名函数,逻辑将正常工作:
$("body").on('click', 'ul#ajax-users-list>li', function() {
console.log($(this).data('id'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="ajax-users-list">
<li data-id="foo">click me</li>
</ul>
如果您更喜欢使用箭头函数,那么您需要从提供的 event
参数而不是 this
引用中获取引发事件的元素:
$("body").on('click', 'ul#ajax-users-list>li', (e) => {
console.log($(e.target).data('id'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="ajax-users-list">
<li data-id="foo">click me</li>
</ul>
关于javascript - `this` 触发事件时属于窗口对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45090031/
相关文章:
dom - Chrome 扩展程序可在用户单击浏览器按钮时更改 DOM
javascript - 使用 if/else if 函数根据选择中选择的选项执行不同的操作
jquery - 暂停后播放音频元素在 jquery 中不起作用
javascript - 如何从外部文件运行函数作为表单的 Action ?
javascript - 更改 Class 为 X 的元素的 ID
javascript - 将 javascript 函数分配给 dom 元素
javascript - @Input 和 @Output 在 Angular-Cli 中始终未定义