我有一个简单的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)
作为变量传递,我的功能现在正常运行(看看我在那里做了什么?)。
答案 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元素