0

我有多个具有相同类名的标签。然后我有一个函数,它遍历具有此类名称的所有标签并隐藏/显示这些。

问题:我在这个标签中有多个控件,如果它被隐藏,我想重置所有这些控件。但我可以在 this 中找到所有控件的集合。

帮助...!!!!

示例代码:

function toggleRows(rowClass, value, max) { 
        $("." + rowClass).each( 
        // For each element which a class of rowClass, run this code. 
        function () { 
            var rowNumber = parseInt($(this).attr("rowNumber")); 

            //If the specified value is >= the row number, then show the row, else hide it. 
            if (value >= rowNumber) { 
                $(this).show(); 
            } 
            else { 
                $(this).hide(); 
                var frm = $(this).children(); 
                for (i = 0; i < frm.elements.length; i++) {   
                 if (frm.elements[i].type == "checkbox") { 
                        frm.elements[i].checked = false; 
                    } 
                    if (frm.elements[i].type == "radio") { 
                        frm.elements[i].checked = false; 
                    } 
                    if (frm.elements[i].type == "text") { 
                        frm.elements[i].value = ""; 
                    } 
                    if (frm.elements[i].type == "select") { 
                        frm.elements[i].value = 0; 
                    } 
                } 
            } 
        }); 


    <tr id="id1" runat="server" class="rowClass"  rownumber="1"> 
 <td> 
    <table width="100%"> 
       <tr> 
           <td runat="server" enableviewstate="False" id="td1" class="numberColumn"> 
                &nbsp; 
            </td> 

           <td class="numberColumnNoBold"> 
                &nbsp; 
             </td> 
          <td> 
              test1 
          </td> 
          <td align="right"> 
             $ 
          <asp:TextBox ID="textbox1" runat="server" CssClass="textthinnumeric" /> 

              </td> 
                     </tr> 
           <tr> 
       <td runat="server" enableviewstate="False" id="tdS1" class="numberColumn"> 
                &nbsp; 
          </td> 
       <td class="numberColumnNoBold"> 
               &nbsp; 
       </td> 
       <td> 
             test2 
       </td> 
      <td align="right"> 
               <asp:RadioButtonList ID="rbl1" runat="server" RepeatDirection="Horizontal"> 
                <asp:ListItem Value="Yes" Text="Yes" /> 
                <asp:ListItem Value="No" Text="No" />    </asp:RadioButtonList>                                                                                           </td> 
      </tr> 
       <tr> 
           <td runat="server" enableviewstate="False" id="tdS21" class="numberColumn"> 
                 &nbsp; 
            </td> 
           <td class="numberColumnNoBold"> 
                   &nbsp; 
            </td> 
            <td colspan="2"> 
                test3:<br /> 
             <asp:TextBox ID="textboxSt1" runat="server" TextMode="MultiLine" Rows="3" Columns="100" /></td> 
           </tr> 
      </table> 
   </td> 
 </tr>
4

2 回答 2

2

您应该包含您的 html,因此我们可以 100% 确定您得到了所需的答案。但是,仅您的 JS 本身就有几点可以让您更多地使用 jQuery:

function toggleRows(rowClass, value, max) { 
    $("." + rowClass).each(function () { 
        var row = $(this),
            rowNumber = row.index(); 

        row.toggle(value >= rowNumber);

        if (!row.is(':visible')) {
            row.find('input[type="checkbox"]').prop('checked', false);
            row.find('input[type="radio"]').prop('checked', false);
            row.find('input[type="text"]').val('');
            row.find('select').val('0');
        } 
    }); 

编辑:为 ddl 使用了错误的选择器

于 2012-09-20T08:26:22.323 回答
1

To find all the controls in a tr (for a specific css class) using jquery , simply use :

$('tr .YourClassName');
于 2012-09-20T08:34:10.773 回答