jquery为特定类型的子项设置类

时间:2010-09-03 23:55:20

标签: asp.net jquery jquery-traversing

我有与多个控件关联的标注标签,当其中任何一个错误时,它应该变为红色。

<tr>
    <th>
        <asp:Label for="test">jquery will make my class as updnValidationErrorLabel</asp:Label>
    </th>
    <td > this text is right
        <asp:TextBox class='textboxWide taskListCheckPreVital' />
    </td>
    <td>this is wrong text hence it has updnValidationErrorInput
        <asp:TextBox class='dummyclass updnValidationErrorInput'/></td>

</tr>
​

我正在尝试这种方法,但不确定为什么mainparent children元素不会显示为类updnValidationErrorInput

//if my sturcture has updnValidationErrorInput
$('.updnValidationErrorInput').each(function() {
  // go to tr element
  var mainParent = $(this).parents('tr:first');
  // under tr element find updnValidationErrorInput
  if(mainParent.children('.updnValidationErrorInput').length > 0){
  // set label which has for attribute with    updnValidationErrorLabel
  mainParent.children('label').attr('for').removeClass().addClass('updnValidationErrorLabel');        
  }
});

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

由于您来自<input> .length支票必须为真,因此您可以删除它们。您可以将其缩短到整体:

$('.updnValidationErrorInput').each(function() {
   $(this).cloesest('tr').find('label[for]')
          .removeClass().addClass('updnValidationErrorLabel');
});

您可以使用等效(且更便宜).parents('tr:first')代替.closest(),然后找到具有<label>属性的任何for=""元素,并更改其上的类。