2012-03-26 38 views
1

我有以下HTML:jQuery的.parent。接下來.show不工作

<tr> 
    <td> 
     <input type="checkbox" class="showFilter" /> Ranks 
    </td> 
</tr> 
<tr class="hideFilter"> 
    <td class="textBold"> 

     <select class="ranks singleListBox" id="select1" name="selectListFilterRank"> 
      <option value="all">All</option> 
       <% Do While NOT rsGetRanks.EOF %> 
          <option value="<%= rsGetRanks("RankID") %>"><%= rsGetRanks("Description") %></option> 

       <% 
         rsGetRanks.MoveNext 
        Loop   
       %>     
     </select> 
    </td> 
</tr> 

我有以下的JQuery:

$('.showFilter').change(function() { 
       if(this.checked) { 
        $(this).parent('tr').next().show(); 
       } else { 
        $(this).parent('tr').next().hide(); 
       } 

      }); 

我想使它所以當他們點擊複選框,它會找到父母<tr>,轉到下一個<tr>並顯示<tr>

該部分不能正常工作,出於某種原因它不會顯示<tr>

所有hideFilter所做的是將顯示設置爲無,其他CSS目前不應該混淆。

+1

是在正確的答案非常接近,在上面我給它的傢伙假設。 Dimitri,charlietfl和RobW都提供了正確的方式,現在正在開展工作。謝謝你們! – 2012-03-26 20:08:48

+0

所有人的聲譽:D你會成爲一個好王:p – DdD 2012-03-26 20:15:11

+0

嘿,現在這將是一個甜美的職位。 ;) – 2012-03-26 22:34:52

回答

1

parent()選擇直接父母,這是一個<td>。使用.closest('tr')來選擇父行。

而且,你的代碼可以使用.toggle()寫成甚至更短:

$('.showFilter').change(function() { 
    $(this).closest('tr').next().toggle(this.checked); 
}); 
1

而不是使用.parent( 'TR'),使用。家長( 'TR')

  • 父([查詢])只上升1級。
  • 父母([查詢])搜索所有父節點,直到找到您要搜索的內容。