2012-10-08 7 views
5

mam serię slajdów oparciu off sekcjach:Jquery Uzyskaj ostatni wiersz tabeli w ciągu ostatniego elementu w serii

<div id="slides"> 
    <section id="first"> 
     <section> 
      <table> 
       <thead> 
       </thead> 
       <tbody> 
        <tr id="somethingUnique"> 
        ... 
        </tr> 
       </tbody> 
      </table> 
     </section> 
     <section> 
      <table> 
       <thead> 
       </thead> 
       <tbody> 
        <tr id="somethingUnique"> 
        ... 
        </tr> 
       </tbody> 
      </table> 
     </section> 
     ... 
    </section> 
</div> 

muszę wybrać chwycić identyfikator ostatniego wiersza z tabeli w ostatniej sekcja #first section.

Używam następującego Jquery, uzyskując "niezdefiniowany" z powrotem ... wszelkie pomysły?

var lastListItem = $('#first:last-child table>tbody>tr:last').attr("id"); 
    alert(lastListItem); 
+0

I stworzył [skrzypce] (http://jsfiddle.net/Tdjzj/) i wydaje się, aby powrócić 'cośUnikalny' –

Odpowiedz

0
var lastListItem = $('#first section:last table tr:last').attr("id"); 
0
var lastListItem = $("#first").find("section").last().find("tr").last().attr("id"); 

wolę pomocą [0] .id zamiast .attr ("id") od jego mniej wywołania metody; Jeśli jednak nie masz pewności, że zawsze będziesz mieć tabelę w tej pozycji DOM, attr jest bezpieczniejszy.

+0

Możesz użyć pseudo-selektorów, aby znaleźć przedmioty, ale zdecydowałem się napisać odpowiedź używając przykutych metod dla lepszej wydajności. –

+0

Czy zmierzyłeś, że to rozwiązanie jest w rzeczywistości szybsze w przeglądarkach obsługujących 'querySelectorAll()'? –

+0

@ FrédéricHamidi Nie, w zależności od przeglądarki querySelectorAll może być szybszy. Jednak nadal jest to metoda, która musi przeanalizować długi ciąg, aby określić, jakiego rodzaju elementów szukać w DOM. Wolę używać querySelectorAll (lub pseudo-selektorów w jQuery), gdy selektor jest krótszy, a nie dłuższy. –

0

.find():

Get potomków każdego elementu do bieżącego zestawu dobranych elementów, przesączono przez przełącznik, obiekt jQuery lub elementu.

​$("#first")​.find("tr:last").attr("id") 

lub więcej po prostu w tym przypadku:

$("#first tr:last").attr("id") 

EXAMPLE

+0

Nie ma potrzeby stosowania $.znajdź "w tym przypadku, tak jak pokazałeś –

0

innych odpowiedzi pracować, ale problem z próbą jest fakt, że :last-child musi być stosowany do elementu potomnego (section), a nie do elementu nadrzędnego (#first). Poniższa powinien działać

$('#first section:last-child table>tbody>tr:last').attr("id"); 

i może być uproszczone do

$('#first section:last-child tr:last-child').attr("id"); 

http://jsfiddle.net/e7mUD/1

Powiązane problemy