javascript - javascript类对象中的点击事件后如何访问元素数据属性
问题描述
我在 javascript 中有一个类,它有一个 bindEvents() 方法来捕获点击事件。每个事件都会触发对同一类的新方法的调用。
我需要一些帮助来理解bind
和this
影响。
class StdList {
constructor(config){
this.config = config;
this.api = 'api/v1/endpoint';
this.bindEvents();
}
bindEvents() {
this.config.container.on('click', '.do-edit', this.onEditClicked.bind(this) );
}
onEditClicked(e){
var self = this;
if (e)
e.preventDefault();
let row = $(this).data('item_id');
console.log("onEditClicked row ID:", row); // onEditClicked row ID: undefined
console.log("Print API: ", self.api); // This works, and print api/v1/endpoint
}
}
按钮 .do-edit 具有这样的数据属性集data-item_id="531"
。
如果我不使用bind(this)
,我可以使用 $(this).data(..) 轻松访问触发事件的按钮属性,但我不能使用该类的其他属性或方法。要使用其他类方法和属性,我使用了 .bind(this) ... 现在我可以访问该类,但无法访问按钮的属性。
如何访问元素属性并仍然可以访问该类?
解决方案
我发现了一些有用的东西。不知道这是否是“最好的方法”,但它有效。
我只是event.target
在 onEditClicked 方法中使用了该函数。
onEditClicked(e){
let row = $(e.target).data('item_id');
console.log("onEditClicked row ID:", row); // It works. onEditClicked row ID: 531
console.log("Print API: ", this.api); // This works, and print api/v1/endpoint
}
推荐阅读
- c++ - C++ 中明确定义的方法没有匹配函数
- java - 如何在spring boot中动态运行cron
- python - 在 Pandas Groupby 之后使用元组键转换为(索引,列)数据框
- google-apps-script - 使用应用脚本在云端硬盘的特定文件夹中创建文件
- python - 在列表中的字典中创建每个项目的值列表
- android - 扩展 Container 以填充导航抽屉的高度
- google-cloud-dataflow - 使用时间作为输入的 Apache Beam
- angular - 斯巴达克斯上的嵌套面包屑
- github - 从 github 模板中获取 PR 编号
- java - spring.jpa.properties.hibernate.jdbc.time_zone 应用于写入而不是读取?