以上不在div内工作

时间:2011-04-17 07:45:13

标签: javascript jquery

我正在尝试在texbox有焦点时更改标签的颜色

 <div class="editor-label">
     <%: Html.LabelFor(model => model.FirstName) %>
 </div>
 <div class="editor-field">
     <%: Html.TextBoxFor(model => model.FirstName) %>
     <%: Html.ValidationMessageFor(model => model.FirstName) %>
 </div>

这是我的javascript

  $(':text').focus(function () {
        $(this).prevAll("label").last.css("color", "blue");
  });

$(this).prevAll()始终为空。但$(this).next()$(this).nextAll()有一个范围

请帮助我真的很感激任何帮助

4 个答案:

答案 0 :(得分:2)

$(this).prevAll("label")为空,因为prevAll("label")会查找文本框的标签同级。你应该做这样的事情:

$(':text').focus(function () {
    $(this).parent("div").prev().find("label").css("color", "blue");
});

next()nextAll()返回一个范围,因为以下代码将呈现为span,这是文本框之后的下一个元素。

<%: Html.ValidationMessageFor(model => model.FirstName) %>

答案 1 :(得分:1)

您可以尝试使用jQuery attr找到它 类似的东西:

$('label[for="FirstName"]').css("color", "blue"); 

(未经测试,抱歉!)

答案 2 :(得分:1)

根据我的理解,你可以做这样的事情:

$('div.editor-field input').focus(function () {
    $('div.editor-label label').css({"color":"black"});//Reset color for all labels
    $(this).parent().prev().find('label').css({"color":"blue"});
});

答案 3 :(得分:1)

这就是我做的事情

 <script type="text/javascript">
        $(':text').focus(function () {
            $(this).closest('div').prev().children('label').addClass("selected");
        });

        $(':text').blur(function () {
            $(this).closest('div').prev().children('label').removeClass("selected")
        });

 </script>
请告诉我你的想法。