JQuery函数无法识别$(this)

时间:2013-12-05 15:18:30

标签: jquery

我有一个简单的jQuery函数,可以在点击时更改表格单元格的颜色。

function ChangeColor( color ) {
    $(this).css('background-color', color);
}

$('td').click(function() { ChangeColor( brush_color ); } );

此功能没有响应,并且没有控制台错误,所以为了缩小我的问题,我删除了brush_color /颜色变量,但这也没有用:

function ChangeColor() {
    $(this).css('background-color', '#333');
}

$('td').click(function() { ChangeColor(); } );

我从这个(以及其他一些测试)中推断出我的函数没有将$(this)识别为已被点击的td。我很好奇我的函数中确切地被识别为$(this)的原因以及它为什么不会出现错误。与此同时,我将$(this)作为变量传递,我的功能现在正常运行(看看我在那里做了什么?)。

2 个答案:

答案 0 :(得分:7)

发送此功能

$('td').click(function () {
    ChangeColor(brush_color, this);
});

function ChangeColor( color, ele ) {
    $(ele).css('background-color', color);
}

如果没有发送到函数

,ChangeColor不会识别“this”

答案 1 :(得分:3)

ChangeColor函数中没有关键字“this”的上下文

而不是

$('td').click(function() { ChangeColor(); } );

使用

$('td').click(function() { ChangeColor.call(this); } );

这将传递'this'的上下文,其中上下文是单击的TD dom元素