在外部函数中使用$(this)

yuv*_*sab 5 javascript jquery

我是JavaScript的新手,我想知道为什么它对我不起作用:

function resetColor(){
     $(this).css( { "color": "red" } )
}

$('.class').click(function() {
     resetColor();
});
Run Code Online (Sandbox Code Playgroud)

我也尝试$(this)在点击时保存为变量.class,但这对我也不起作用.

koa*_*dev 11

一种更简单的方法是引用该函数而不是将其包装在匿名函数中,如下所示:

$('.class').click(resetColor);
Run Code Online (Sandbox Code Playgroud)


Kha*_*lid 5

最好的方法是将其作为参数传递

function resetColor(element) {
     $(element).css( { "color": "red" } )
}

$('.class').click(function() {
     resetColor(this);
});
Run Code Online (Sandbox Code Playgroud)

另一种方法是将resetColor定义为对象内的函数

    jQuery.fn.resetColor = function() {
         $(this).css( { "color": "red" } )
    }
    $('.class').click(function() {
         $(this).resetColor();
    });
Run Code Online (Sandbox Code Playgroud)


Aus*_*rst 5

this代表谁调用函数的上下文.当你打电话时resetColor,它隐含地使用this作为window对象的顶级.如果您希望通过函数调用来维护上下文,则可以使用call().

$('.class').click(function() {
    resetColor.call(this);
});
Run Code Online (Sandbox Code Playgroud)

另一个明显的选择是不使用this,而是将元素作为参数传递.

function resetColor(e) {
     $(e).css({color: 'red'});
}

$('.class').click(function() {
     resetColor(this);
});
Run Code Online (Sandbox Code Playgroud)