2010-06-02 7 views
1

J'ai ce blog wordpress qui a beaucoup de pages avec des sous-pages qui déroulent sur le vol stationnaire .... la chose est, je ne veux pas que les pages que vous survolez à quoi que ce soit à moins qu'ils ne avec beaucoup d'ancres à l'intérieur donc juste les sous-pages auront un href différent de "#" Donc, fondamentalement Im piratage mon chemin à travers cela avec un simple javascript.Aide avec sélecteur css pour jquery

jQuery(document).ready(function(){ 
    jQuery("#menus li > a").attr("href","#"); 
}); 

C'est la sélection tout a .. et je ne veux pas que ... Je veux juste les points d'ancrage qui sont des pages principales, non ... des sous-pages html Heres le peut-être que vous pouvez penser à une meilleure façon de sélectionnez ceci.

Ill expliquer d'abord

la structure est une ul avec beaucoup li qui ont un point d'ancrage à l'intérieur si le li a également ul à l'intérieur alors ce sont des sous-pages qui apparaîtront sur le vol stationnaire. donc l'ancre initiale devrait avoir href = "#" s'il n'y a pas d'ul à l'intérieur de li alors que li a devrait garder son href.

<ul id="menus"> 
     <li> 
     <a href="somelink">Main Page</a> //href should be changed to # 
     <ul> 
      <li> 
       <a href="somelink2/">Subpage1</a> 
      </li> 
      <li> 
       <a href="somelink3">Subpage2</a> 
      </li> 
     </ul> 
     </li> 
     <li> 
     <a href="somelink">MainPage-with-no-subpages</a> //href should not be changed 
     </li> 
     <li> 
     <a href="somelink4">MainPage</a> //href should be changed to # 
     <ul> 
      <li> 
      <a href="somelink5">Subpage</a> 
      </li> 
      <li> 
      <a href="somelink6">Subpage</a> 
      </li> 
     </ul> 
     </li> 
</ul> 

Répondre

2

essayer

jQuery(document).ready(function(){ 
    jQuery("#menus li > ul").siblings('a').attr("href","#"); 
}); 
+0

Ignore tout ce que je disais dans ma réponse. Je n'ai pas lu votre question correctement. Reigel est absoutely correct. –

+0

's'il n'y a pas ul à l'intérieur du LI alors le li un devrait garder son href.', donc, mon approche est de trouver le ul ... puis changer le href de' '... si non ul, href de '' reste .... – Reigel

0

Cela devrait faire ce que vous voulez:

jQuery(document).ready(function(){ 
    jQuery("#menus li:has(ul) > a").attr("href","#"); 
} 
+1

en utilisant un sélecteur non-standard comme ': not',': has', etc ... est lent ... autant que possible, essayez de ne pas les utiliser ... – Reigel

+0

I ' Je suis conscient qu'il y a un overhead mais j'avais l'impression qu'il n'est pas plus lent que de traverser puis de redescendre le DOM comme les autres réponses? Corrige moi si je me trompe... – fyjham