2010-05-14 7 views
1

J'ai un tas d'éléments comme celui-ci:jquery nextUntil élément a

<div></div> 
<span></span> 
<table></table> 
<div></div> 
<span></span> 
<div></div> 

Je dois vérifier si oui ou non il y a un élément de table entre les divs, et si oui faire quelque chose.

$('div').each(function() { 
    if ($(this).nextUntil('div').include('table')) { 
    $(this).addClass('got-a-table'); 
    } 
} 

Quelque chose comme ça? Je sais qu'il n'y a pas de méthode d'inclusion, y a-t-il quelque chose qui peut me procurer ce dont j'ai besoin?

Merci.

résultat devrait ressembler à ceci:

<div class='got-a-table'></div> 
<span></span> 
<table></table> 
<div></div> 
<span></span> 
<div></div> 

Edit: un jsbin pour testign rapide: http://jsbin.com/aqoha/2/edit

Répondre

1
$('div').each(function() { 
    if ($(this).nextUntil('div').filter('table').length > 0) { 
    $(this).addClass('got-a-table'); 
    } 
}); 

Au lieu d'inclure(), vous voulez que le filtre().

+0

Si vous avez vu cette réponse apparaître et disparaître à plusieurs reprises, il est parce que je pensais que ça allait travailler avant que je changé d'avis. Après avoir testé la chose, je suis sûr que cette version fonctionne maintenant. – erisco

0

essayer

$('div').each(function() { 
    var table = $(this).next('table'); 
    if (table) { 
     if (table.next('div')){ 
      // do something. 
     }  
    } 
}); 
+0

Je ne crois pas que cela fonctionne: http://jsbin.com/aqoha/2/edit – Mark