2016-11-30 80 views
2

变化事件中,我通常的代码是这样的:如何传递参数 “这” 关于使用Arrow功能

HTML代码:

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

JS代码:

$("#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应该是指选择元件)。

如何传递参数?

回答

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时调用处理程序时相同。

+0

这是一个很好的答案! – CMedina

+0

@CMedina:很高兴帮助!但是,如果你不接受它,我已经将它发布到Rory链接的早期问题上,所以我只是在这里删除它。 –