2009-03-05 5 views
0

modifier: ok, la ligne:jquery conception de menu heirarchical

$(<?php echo("'#".$_GET['item']."'") ?>).parent().show(); 

est évidemment et tenter de garder le menu ouvert au bon endroit. Je ne pense pas que cela a déjà fonctionné (je déteste travailler sur d'autres codes ppls).

Alors mon problème actuel est de savoir comment accéder au <ul class="myul"> directement au-dessus du <li id="001" > en utilisant cet item id = 001 ??

Salut

Je suis en train de réparer un morceau de code qui me reste par un programmeur perdu. Cela fonctionne mais il manque une fonctionnalité; Je ne reste pas ouvert au bon endroit quand un élément de menu est sélectionné.

Jquery:

$.swapImage(".swapImage");         
      $(<?php echo("'#".$_GET['item']."'") ?>).parent().show(); 
      $('.myul').hide();    
      $('.slide_ul li:not(:first-child)').hide();  
      $('.hideMe').click(function(){ 
       $(this).next('ul').slideToggle('fast').siblings('ul:visible').slideUp('fast'); 
      });        
      $('.myul a').click(function(e){ 
       var url = $(this).attr('href'); 
       var index = url.indexOf('='); 
       var substr = url.slice(index+1);      
       $('#productContainer >div').hide(); 
       $('#productContainer').load("products/"+substr+"/product.html", function(){ 
        $(this).fadeIn('slow'); 
        var i = 0; 
        $('.slide_ul li:not(:first-child)').hide();                    
       });     
      }); 

HTML:

<!-- Right Navigation --> 
         <div id="rightNav"> 
          <div id="navMenu"> 
           <h2 id="navMenuheader">Catalogue</h1> 
           <h3 class="hideMe">Widgets</h3> 
           <ul class="myul"> 
            <h4 class="hideMe">Widget Coins</h2> 
            <ul class="myul"> 
             <li id="001" > 
              <a href="products.php?item=001">The South African Widget</a> 
              </li> 

Le résultat du clic de menu est injectContent dans un div noir au milieu de la page. Est-ce que $(document).ready(function(){ se produit chaque fois que cela se produit? Sinon, je ne vois pas pourquoi toutes les positions de menu sont mises à jour.

Je suppose que j'ai besoin de plus de code pour identifier l'endroit dans le menu que nous sommes et les laisser ouverts. Il y a des fourmis sur mon bureau.

Répondre

0

Juste eu à ajouter quelques jquery pour rouvrir la section pertinente du menu après tout a été caché. Ainsi, juste après la ligne $('.myul').hide() je rouvre la section de menu en fonction de la requête URL (products.php item = 001?):

var item = <?php echo("'".$_GET['item']."'") ?>; 

       if (item != '')    
       { 
        item = "li#" + item;    
        $(item).parent().show(); 
        $(item).parent().parent().show(); 
       } 
1

me semble que la balise mauvaise clôture

<h4 class="hideMe">Widget Coins</h2> 

est votre principal problème, quand il est cliqué sur

$(this).next('ul') 

ne parvient pas à trouver un ul parce qu'il est un enfant au lieu d'un frères et soeurs de la h4
changer à

<h4 class="hideMe">Widget Coins</h4> 

marques il fonctionne mieux, pas sûr si cela était tout ce que vous cherchiez

$(<?php echo("'ul:has(#".$_GET['item'].")'");  ?>).show(); 

ouvrira ses portes chaque ul qui a un descendant avec l'id spécifié
juste en utilisant .parent() n'a pas été obtenir le haut pour montrer ul

+0

Cela a certainement besoin de fixation, mais ce n'est pas le problème, malheureusement. Lorsque je rencontre des problèmes, je désélectionne l'élément de menu que je viens de sélectionner: $ () .parent(). montrer(); doit être interprété comme $ ('li # 001'). Parent(). Show(); mais ça ne montre rien – edzillion