2010-02-18 5 views
2

Cela peut être difficile.jQuery trouver li avec la classe jusqu'à

Php générera:

<li>element</li> 
<li>element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li>element</li> 
<li>element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li>element</li> 

Ce que je besoin est un moyen de trouver les éléments li avec la classe .ALT jusqu'à ce que les éléments li commencent. Alors ...

<li>element</li> 
<li>element</li> // if I click on this one, it will select 
<li class="alt">element</li> // this one 
<li class="alt">element</li> // and this one 
<li class="alt">element</li> // and this one 
<li>element</li> // stops selecting here 
<li>element</li> 
<li class="alt">element</li> // doe not this one 
<li class="alt">element</li> // or this one 
<li class="alt">element</li> // or any other .alt 
<li>element</li> 

J'ai essayé de faire cela avec .Find(), mais je ne peux pas trouver un moyen de diviser les éléments .ALT en groupes et à isoler le premier.

Y at-il des braniacs avec une bonne idée?

Répondre

5

Si vous utilisez jquery 1.4, vous pouvez utiliser la nouvelle méthode nextUntil.

http://api.jquery.com/nextUntil/

modifier - exemple:

$("li").click(function() { 

    $(this).nextUntil("li[class='']").each(function() {   
    console.log($(this));   
    }); 

}); 
+0

Je viens de lire à ce sujet l'autre jour. Moi et ma mémoire, merci beaucoup mon pote. – daulex

+0

+1 pour obtenir l'adoption de l'adoption de la norme –

+0

@daulex - pas de problème @mark - oui, cette méthode est très pratique. Je peux penser à de nombreux cas où j'aurais pu l'utiliser auparavant. J'apprécie également l'utilisation .index() plus intuitive. – ScottE

0

essayer (quelques modifications, mais pense que je l'ai)

$ ('li: contient (élément)') cliquez sur() find ('li:.. Contient (élément): non [alt]: premier '). prevAll (' li.alt ');

0

ne pourriez-vous pas ajouter une classe supplémentaire pour le lis qui va être récupéré?

Questions connexes