2014-05-14 15 views
7

Come posso ottenere il primo elemento (successivo) nell'elenco che corrisponde al selettore?JQuery - Trova il primo selettore di corrispondenze tra parentesi

Esempio:

<table> 
    <tr class="test"><td>not this one</td></tr> 
    <tr><td><a title="test">click</a></td></tr> 
    <tr><td>not this one</td></tr> 
    <tr class="test"><td>this one</td></tr> 
    <tr class="test"><td>ignore this as well</td></tr> 
</table> 

$("a").on('click', function(eve){ 
    $(this).parents("tr").???(".test").toggle(); 
}); 

modificare

ho bisogno la seguente riga. i fratelli ottengono anche altri (come la prima riga)

+1

cosa stai cercando di fare ?? –

+0

Ho alcune righe dinamiche che vengono attivate e disattivate dalla riga precedente. non posso usare 'next()' dal momento che non riesco a capire quale delle righe avrò - e quante. – yossi

risposta

14

Utilizzare .nextAll() per ottenere i seguenti fratelli di un elemento e :first per ottenere il primo elemento abbinato.

Prova questo:

$("a").on('click', function(eve){ 
    $(this).parents("tr").nextAll(".test:first").toggle(); 
}); 

DEMO

0

si può provare utilizzando jQuery eq();

Dato un oggetto jQuery che rappresenta un insieme di elementi DOM, il metodo .eq() costruisce un nuovo oggetto jQuery da un elemento all'interno di tale insieme. L'indice fornito identifica la posizione di questo elemento nel set. Documentation on jQuery

<table> 
    <tr class="test"><td>not this one</td></tr> 
    <tr><td><a title="test">click</a></td></tr> 
    <tr><td>not this one</td></tr> 
    <tr class="test"><td>this one</td></tr> 
    <tr class="test"><td>ignore this as well</td></tr> 
</table> 

Il codice sarebbe selezionare il 2º fratello con la classe "test" della < tr> che è uno dei genitori al cliccato < a> (rosso questo modo inverso e hai ottenuto la tua codice):

$("a").on('click', function(){ 
    $(this).parents("tr").siblings(".test").eq(1).toggle(); 
}); 

Check the Pen!

+1

Non risponde al 100% alla domanda di OP come 1) OP ha chiesto i successivi sbiling quindi 'nextAll' invece di' fratelli' (selezionare anche quelli precedenti) e 2) ha chiesto il successivo (il primo) quindi 'eq (0) 'invece di' eq (1) '. Anche se hai accennato, seleziona la seconda, è comunque meglio rispondere direttamente alla domanda :) –

Problemi correlati