2010-03-04 12 views
15

Obecnie mam tabelę z tabeli zagnieżdżonej w nim:jQuery wybierz tylko tr/td w głównej tabeli, a nie zagnieżdżonych tabelach.

<table class="datagrid" id="report"> 
     <thead> 
     <tr> 
      <th>item1</th> 
      <th>item2</th> 
     </tr> 
     </thead> 
     <tbody> 
     <tr class="odd"> <-- on click from this level only 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td colspan="2"> 
     <table> 
      <tr class="odd"> <-- not to be fired here 
      <td></td> 

etc strukturę tabeli.

Obecnie używam następującego jQuery, który uruchamia się na każdym tr niezależnie od poziomu tabeli. Jak mogę go zmienić, aby strzelał tylko na pierwszym poziomie?

$(document).ready(function(){ 
      $("#report tr:not(.odd)").hide(); 
      $("#report tr:first-child").show(); 

      $("#report tr.odd").click(function(){ 
       $(this).next("#report tr").fadeToggle(600); 
      }); 
     }); 

Odpowiedz

29

Użyj child selector > aby wybrać tylko te tr elementy, które są dzieckiem raport stołu tbody, na przykład:

$("#report > tbody > tr.odd") 
+0

Dzięki za szybką reakcję. Nowe było to coś naprawdę prostego. – TheAlbear

0

Chcesz

$("#report>tr") 

> oznacza bezpośredni potomek (child) zamiast dowolnego potomka.

+2

To nie zadziała, ponieważ 'tr 'nie jest BEZPOŚREDNIM potomkiem' table'. 'tbody' jest pomiędzy. – mbm29414

3

użyć selektora > kierować tylko bezpośredni potomek elementu. Trzeba kierować niejawny elementu TBODY wewnątrz tabeli także:

$('#report>tbody>tr.odd') 
9

z tego rozwiązania to nie ma znaczenia, czy masz tag TBODY pomiędzy:

$('table').find('tr:first').parent().children() 
+0

Moje zrozumienie jest następujące: najpierw wybierz tylko jedną z głównej tabeli. Jednak OP wydaje się szukać wyboru tr z głównego stołu. – Panther

+2

Prawidłowe zrozumienie polega na tym, że gdy pierwszy znacznik "tr" zostanie znaleziony, zostanie pobrany jego rodzic, a następnie zwrócone zostaną wszystkie dzieci w nim zawarte. W związku z tym wszystkie elementy 'tr' z wybranej' tabeli' zostaną zwrócone –

+0

Im bardziej ogólny charakter tego podejścia sprawia, że ​​jest on lepszy niż akceptowana odpowiedź na to pytanie. – CodeMonkeyG

Powiązane problemy