JQuery遍历文本框并更改其颜色

JQuery遍历文本框并更改其颜色,jquery,Jquery,我试图遍历表中的所有空文本框,并更改其背景颜色。我使用以下JQuery代码: $("#btn2").click(function() { var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; }); emptyTextBoxes.each(function() { this.css('background-c

我试图遍历表中的所有空文本框,并更改其背景颜色。我使用以下JQuery代码:

    $("#btn2").click(function() {
            var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
            emptyTextBoxes.each(function() {
            this.css('background-color', '#ffff00');
//            $('#Col3Txtbx').css('background-color', '#ffff00');    
            });
        });
这个
似乎不是指我觉得奇怪的文本框。当我取消注释特定文本框时,它会重置背景颜色


有人能给我解释一下“This”指的是什么吗?

改变颜色的This指的是按钮。如果将其移动到返回此.value的位置,则可能会起作用。

每个函数的工作方式略有不同:

$("#btn2").click(function() {
  var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
  emptyTextBoxes.each(function(index, element) {
    $(element).css('background-color', '#ffff00');
  });
});
但您也可以在不使用each()的情况下实现这一点:

更简短的版本:

$("#btn2").click(function() {
  $("input:text[value='']").css('background-color', '#ffff00');
});
编辑:正如“rz”所指出的,您仍然可以使用
this
关键字,但是您必须将元素包装到jQuery对象中:

$("#btn2").click(function() {
  var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
  emptyTextBoxes.each(function() {
    $(this).css('background-color', '#ffff00');
  });
});
根据,将向每个回调传递一个索引和相关元素,并将其设置为domeElement。因此,将
this.css('background-color','ffffff00')
更改为
$(this.css('background-color','ffffff00')

$("#btn2").click(function() {
  var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
  emptyTextBoxes.each(function() {
    $(this).css('background-color', '#ffff00');
  });
});