如何使用箭头功能在更改事件上传递参数“this”

时间:2016-11-30 16:40:24

标签: javascript jquery arrow-functions

我的代码通常是这样的:

HTML CODE:

<select id="mySelectOne">
   <option value="1">1</option>
   <option value="2">2</option>
   <option value="3">3</option>
</select>

JS CODE:

$("#mySelectOne").on("change",function(){
    var value = $(this).val(); // Return the value selected
    alert(value); 
});

使用箭头功能:

$("#mySelectTwo").on("change", () => {
    var value = $(this).val(); //"this" is undefined
    alert(value);
});

DEMO: https://jsfiddle.net/cmedina/kr1hxxtm/

当我使用箭头功能时,this的值为undefined应引用选择元素)。

如何传递参数?

1 个答案:

答案 0 :(得分:8)

你不能。这是箭头功能的一半,它们关闭this而不是按照他们的方式设置自己的设置。对于问题中的用例,如果您希望在调用处理程序时由jQuery设置this,则处理程序需要是function函数。

但如果你有理由使用箭头(也许你想用this表示箭头之外的含义),你可以使用e.currentTarget而不是this像:

$("#mySelectTwo").on("change", e => {      // Note `e` argument
    var value = $(e.currentTarget).val();  // ...and using it here
    alert(value);
});

事件对象上的currentTarget与调用处理程序时jQuery设置this的内容相同。