javascript - 获取链接函数中单击元素的数据属性
问题描述
在如下场景中如何进入imgt
控制台:
function test(e){
let tg = e.target.attr('data-tg');
console.log(tg); // error - target is undefined
}
$('button').on('click', function(e){
let fn = $(this).attr('data-fn');
window[fn]();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button data-tg='imgt' data-fn='test'>CLICK</button>
解决方案
就其自身而言,e.target
它只是一个元素,并不能发挥.attr()
作用。这应该显示在您的控制台中。
此外,您不向函数传递任何参数。考虑以下。
function test(e) {
if (e == undefined) {
console.log("Event is Undefined");
return false;
}
let tg = $(e.target).data('tg');
console.log(tg); // error - target is undefined
}
$("#btn-1").on('click', function(event) {
let fn = $(this).data('fn');
window[fn](event);
});
$("#btn-2").on('click', function(event) {
let fn = $(this).data('fn');
window[fn]();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="btn-1" data-tg='imgt' data-fn='test'>Test 1</button><button id="btn-2" data-tg='imgt' data-fn='test'>Test 2</button>
推荐阅读
- java - 由于 java 访问修饰符导致应用程序崩溃 - 为什么?
- sql - 在插入语句 plsql 中使用 if else
- reactjs - 在 React JSX 中使用 STATE 作为 html ATTR
- docker - 使用 docker 运行主机上存在的文件而不复制它
- java - 读取具有已知和未知列的 CSV 文件 java
- javascript - 我们可以在一个苗条的组件中编写打字稿吗?
- c++ - PCM 文件如何使用 lame 编码器转换为 MP3
- c# - 来自视图模型的 WPF 列表框焦点
- python - 如何替换python列表中存在的字典中的键?
- android - 如何在主类中使用 Companion 对象