2009-02-18 7 views
0

J'utilise jQuery. Maintenant, je dois classer les deux listes. Si une liste ayant un Id commence par outer, je dois l'alerter "Outer". Si une liste ayant un Id commence par sub, je dois l'alerter comme "Sub".Classer les deux listes en utilisant jQuery

<ul id="nav"> 
    <li id="outer1"><a href="#url"><b class="">Outer 1</b></a></li> 
    <li id="outer2"><a href="#url"><b class="">Outer 2</b></a></li> 

    <li id="outer3"><a href="#url"><b class="">Outer 3 </b></a> 
      <ul style="display: none;"> 
      <li id="sub1"><a href="#url"><span id="inner1"> inner1</span></a></li> 
      <li id="sub2"><a href="#url"><span id="inner2"> inner2</span></a></li> 

     </ul> 
    </li> 
    <li id="outer4"><a href="#url"><b class="">Outer 3 </b></a></li> 
</ul> 

Mon code est ci-dessous. J'ai fait le code suivant.

$("li").each(function(){ 
     $("li[ @id ^= 'start' ]") 
      alert("START"); 
     $("li[ @id ^= 'sub' ]") 
      alert("SUB"); 
}); 

Quelle est la modification que je devrais effectuer afin de pouvoir exécuter correctement?

Répondre

1
$("li").each(function() 
{ 
    if($(this).is("[id^='start']")) alert("START"); 
    else if($(this).is("[id^='sub']")) alert("SUB"); 
}); 
0
$("li").each(function(){ 
    $("li[ @id ^= 'start' ]") 

Dans la boucle each, vous devez utiliser mot-clé this. Ainsi, chaque LI est this. Pour ce que vous essayez de faire, si je vous, je le ferais comme ceci:

$("li").each(function(){ 
    $(this).is('[id^=start]') 
}) 

Cependant, je pense que vous feriez mieux de repenser votre raison d'être. Parce que je ne pense pas que vous aurez besoin de tous ces ID. Pour sélectionner le premier niveau de LI, vous pouvez utiliser ceci:

$('ul > li') 

Ensuite, pour le niveau suivant, vous pouvez utiliser

$('ul > ul > li') 

Et ainsi de suite.

1

Si vous voulez juste faire la distinction entre les premier et deuxième éléments de liste de niveau, vous pouvez également utiliser simplement $ (« li li ») pour le deuxième niveau et quelque chose comme $ ("li: non (li li) ") pour le premier niveau (non testé).

Questions connexes