2009-12-21 39 views
0

以下是我改变输入域的标签的颜色代码重点:获取的标签“这个” jQuery中

$(document).ready(function() { 

var name = $(this).attr("name"); 

$(".comm-input").focus(function() { 
    $("label[for=name]").css({"color" :"#669900"}); 
}); 

$(".comm-input").blur(function() { 
    $("label[for=name]").css({"color" :"#999999"}); 
});  

}); 

.comm输入是类的输入。任何想法为什么它不工作?谢谢!

+0

我猜的代码是不完整的,因为不同的变种' name = $(this).attr(“name”);'获得全局对象的属性(也就是对象'窗口')。 – kiamlaluno

回答

3

你有几个问题。

首先,你在ready()定义name。它在那里没有任何(相关)含义。找到它的正确位置在您的事件处理程序中。

其次,你没有替换name的值,你使用的是字面名。你想:

$(function() { 
    $(".comm-input").focus(function() { 
    $("label[for" + this.name + "]").css({"color" :"#669900"}); 
    }).blur(function() { 
    $("label[for=" + this.name + "]").css({"color" :"#999999"}); 
    }); 
}); 

最后,我强烈建议使用CSS类,而不是直接设置CSS样式属性。他们有问题要删除。例如,如果正常的颜色是绿色的,该怎么办?您的代码将其设置为别的它不是东西,但去除类会正确设置它,CSS:

label.highlight { color: #690; } 

有:

$(function() { 
    $(".comm-input").focus(function() { 
    $("label[for" + this.name + "]").addClass("highlight"); 
    }).blur(function() { 
    $("label[for=" + this.name + "]").removeClass("highlight"); 
    }); 
}); 
+0

太棒了!谢谢! – williamg

0

您需要将您的选择改成这样:

$(".comm-input").focus(function() { 
    $("label[for=" + this.name + "]")).css("color", "#669900"); 
});  

它不会自动与您的姓名变量的值修改字符串“名”。

而且,当你抓住了名的变量,this指的是文件,而不是被聚焦的元素。