Javascript &引用;这";在jQuery回调中使用箭头函数时,关键字的行为不同
我有一个包含多行的表,每行上都有一个Javascript &引用;这";在jQuery回调中使用箭头函数时,关键字的行为不同,javascript,arrow-functions,Javascript,Arrow Functions,我有一个包含多行的表,每行上都有一个edit和delete按钮 简而言之,当使用class.edit触发编辑按钮时,会弹出一个表单。除了类名之外,我还包括了一个唯一的id,如id=“edit-32”,其中的数字根据用户单击的行而变化 我试图解决的问题是在破折号之后捕获id属性号。以前,在ES5中,我只是简单地使用thiskeywoard来定位正在单击的当前元素。但是在ES6中,这个keywoard指的是类环境 ES5方法(返回唯一ID) ES6方法(返回未定义) 有没有一种方法可以使箭头函数以与
edit
和delete
按钮
简而言之,当使用class.edit
触发编辑按钮时,会弹出一个表单。除了类名之外,我还包括了一个唯一的id
,如id=“edit-32”
,其中的数字根据用户单击的行而变化
我试图解决的问题是在破折号之后捕获id属性号。以前,在ES5中,我只是简单地使用this
keywoard来定位正在单击的当前元素。但是在ES6中,这个
keywoard指的是类环境
ES5方法(返回唯一ID)
ES6方法(返回未定义)
有没有一种方法可以使箭头函数以与ES5类似的方式工作?
在正常函数中,此
解析为调用函数的对象,因此在本例中,此
是单击的元素
箭头函数中的this
不定义自己的this
,而是使用封闭执行上下文的this
值
在这种情况下,它不适用于箭头函数。您必须坚持使用bog标准函数。这就是箭头函数的用途,也是它们的独特之处。它们不会生成
this
,并且this
仍然是调用它的上下文中的一个。来自MDN:“箭头函数表达式的语法比函数表达式短,没有自己的this、arguments、super或new.target。这些函数表达式最适合非方法函数,不能用作构造函数。”继续使用函数
,因为这里不需要这个来引用外部上下文。您希望它成为jQuery强制它成为的东西(元素)。如果将来出于某种原因您需要一个箭头函数,并且您也需要元素,event
被传递到函数中,因此您可以使用event.target
。谢谢@FrankModica,这个解决方案对于我的方法是可行的。我不知道为什么我的问题被标记为重复。你很好地回答了这个问题,这对我很有效。我知道还有另一种解决方案,使用ES5功能减速不是一种选择。总有工作要做。谢天谢地,我有这方面的知识,否则我会盲从别人的言行。
// Open edit form
$('.edit').click(function(){
// Return id attribute
const id = $(this).attr('id');
// print to console
console.log(id);
});
// Open edit form
$('.edit').click(() => {
// Return id attribute
const id = $(this).attr('id');
// print to console
console.log(id);
});