2009-11-04 16 views
11

Chciałbym wybrać element wewnątrz td jednego z moich tabel, ale tak naprawdę nie rozumiem składni. To co próbowałem:JQuery wybierz element wewnątrz td

$("table > td:#box") 

To jest przykład z mojego struktury tabeli:

<div id="main"> 
<div id="today"> 
    <table id="list" width="100%" cellpadding="4" cellspacing="0" border="0" style="font-size: 10px; border-collapse:collapse;"> 
    <tr id="109008"> 
    <td class="tdstd"> 
    <a class="box" href="link"></a> 
    </td> 

lub Chrome DOM Inspector:

alt text

+0

Proszę napisać odpowiedni fragment kodu HTML i powiedzieć, z której części chcesz się wydostać. – BalusC

+0

Być może możesz pokazać fragment HTML z tabelą i elementem. Czy element div jest identyfikatorem "box"? –

+0

do podaży, czego potrzebujesz - masz tekst i chcesz uzyskać "tekst" lub "identyfikator"? – cupakob

Odpowiedz

17

dobrze „#box "oznacza obiekt DOM z identyfikatorem" box ", ponieważ jest to unikalny identyfikator. Możesz wybrać ten bezpośrednio. Ale twój kod sugeruje, że masz kilka elementów z identyfikatorem "box", które musisz zmienić. należy przypisać klasę do elementu wewnątrz TD, lub jeśli jest to wyjątkowy będąc jedyną DIV lub zakresowy w oknie, można go tak:

$("table td .box") 

Należy zauważyć, że „>” selektor oznacza, że TD musi być bezpośrednim potomkiem TABELI i zakładam, że masz przynajmniej TR poziom pośredni, więc to też nie zadziała. Mój powyższy przykład pasuje do każdego elementu z klasą "box" wewnątrz dowolnego TD, który jest dzieckiem do dowolnego TABELA.

Oczywiście chciałbym ustawić klasę na stole, jak również i używać coś takiego:.

$("table.boxes td .box") 

Tak więc nie przypadkowo wybiera rzeczy poza zakresem chcesz pracować w


Masz teraz dodaje HTML więc jestem edycji moja odpowiedź:

$("table#list a.box") 
+2

+1, ale ma on już identyfikator na stole, który i tak jest znacznie bardziej wydajny - $ ('# list td a.box') jest "poprawnym" rozwiązaniem tutaj – annakata

+0

Prawidłowo, ale ja zwykle używają nazwy znacznika podczas wykonywania wyborów hierarchicznych, dzięki czemu mogę zobaczyć, jaką część strony wybieram. Gdyby identyfikator był "tablelistą", nie miałbym, ale "lista" jest tak ogólna, żebym mógł się pomylić, gdyby mój kod jQuery działał długo. Ale wszystko to powiedziawszy, jesteś oczywiście poprawny :) – Sandman

1
$("table tr td .box") 

Powinien załatwić sprawę.

-2

Nie jestem pewien, ale myślę, trzeba $("td#box") ...

+1

to nie jest w porządku - # oznacza selektor ID i nie ma elmentu z identyfikatorem "box", a tym bardziej td z takim – annakata

+0

na początku był postet tylko tym $ ("table> td: #box") a nie spokój kodu :) – cupakob

+0

tak, zauważyłem to - dlatego cię nie pochwaliłem, tylko skomentowałem :) – annakata

0

selektor ten ...

table td a.box 

mówi jQuery znaleźć tag a z atrybutem class, który zawiera " pudełko". Ten znacznik a musi znajdować się wewnątrz obiektu td, który znajduje się wewnątrz table.

9

Najskuteczniejszym selektor będzie:

$('#list').find('a.box'); 

lub:

$('a.box', $('#list')[0]); 

Wybierając stół id najpierw trzeba ustawić swój zakres do tylko stołu, a następnie można szukać elementu którego potrzebujesz w tym stole.

Drugi selektor jest taki sam, wybierasz coś i nadajesz zakres jako drugi parametr.

Po prostu łatwiej jest przeczytać pierwszą.