为什么 JQuery $(this) 在箭头函数中不起作用

Swa*_*gwa 0 jquery ecmascript-6 arrow-functions

我正在尝试使用 $(this) 以便我可以在箭头中使用 jQuery 对象,但它不起作用

$('.btnReserve').click(function(){
        var element_div = $(this).closest('div');
        console.log(element_div.attr('id');
    });
Run Code Online (Sandbox Code Playgroud)

效果很好

但...

$('.btnReserve').click(() => {
        var element_div = $(this).closest('div');
        console.log(element_div.attr('id');
    });
Run Code Online (Sandbox Code Playgroud)

$(this) 不起作用

为了获得所需的结果,我使用了以下方法

$('.btnReserve').click((event) => {
        var element_div = $(event.target).closest('div');
        console.log(element_div.attr('id');
    });
Run Code Online (Sandbox Code Playgroud)

Nea*_*eal 5

带有箭头的函数this是指直接在您创建的函数范围之外的范围。

对于常规函数,这指的是全局范围绑定范围(在您的情况下是 jquery 对象)

做和做() => {}是一样的(function () {}).bind(this)

尝试使用传递给函数的事件

$('.btnReserve').click((event) => {
    const element_id = event.target.id;
    console.log(element_id );
});
Run Code Online (Sandbox Code Playgroud)