2009-09-11 6 views
0

Je suis relativement nouveau à JQuery et JSON et ceci est mon premier post ici, s'il vous plaît ours avec moi.Essayer d'accéder au menu JSON dans une autre fonction pour construire une navigation à gauche

J'ai une chaîne de menu JSON avec un tableau de trois éléments (nom, url, id - notre numéro d'identification de page interne) et la navigation de haut niveau se construit très bien. Je fais une boucle sur les éléments de niveau supérieur et appelle une fonction récursive pour obtenir les sous-menus. Ce que j'essaie de faire maintenant est dans une partie séparée de la page Web, utilisez la chaîne de menu JSON pour trouver une page de premier niveau (news.aspx, par exemple) et construire un menu pour cette page et c'est éléments de sous-menu pour afficher dans une navigation de gauche qui doit être affiché uniquement sur les pages de nouvelles.

Le problème que j'ai est ce script ci-dessous fonctionne sans aucune erreur Javascript, cependant, il tire la navigation au plus haut niveau. La navigation de haut niveau est essentiellement appelée de la même manière, sauf que les fonctions sont CreateMenu() et CreateMenuRecursive().

Une partie du code que j'utilise ici, j'ai lu d'autres articles sur ce site, mais je n'ai pas trouvé de réponse à cela. Merci d'avance pour votre aide.

<div id="LeftNavDiv">&nbsp;</div> 

<script type="text/javascript"> 
$(function(){ 
var sidemenuString = CreateSideMenu(); 
$("#LeftNav").html(sidemenuString); 
}); 

function CreateSideMenu(){ 
$.get("menu"); 
var sidenavHTML = new Sys.StringBuilder(); 
for(var i=0; i < menu.MenuItem.length; i++){ 
    if(menu.MenuItem[i].id == 'a123456'){ 
     CreateSideMenuRecursive(menu.MenuItem[i],sidenavHTML); 
    } 
} 
return sidenavHTML.toString(); 
} 

function CreateSideMenuRecursive(item, outputHTML){ 
if(item.MenuItem == null || item.MenuItem.length == 0) 
return; 

outputHTML.append("<ul>"); 
for(var i=0; i < item.MenuItem.length; i++){ 
    if(item.MenuItem[i].id == CurrentPageID){ 
     outputHTML.append("<li><a href='" + item.MenuItem[i].url + "'>" + item.MenuItem[i].label + "</a>"); 
    } 
    CreateSideMenuRecursive(item.MenuItem[i], outputHTML); 
    outputHTML.append("</li>"); 
} 
outputHTML.append("</ul>"); 
} 
</script> 
+0

Il manque une question (claire, évidente) à votre "question"; Si vous modifiez cela pour reformuler votre question plus clairement, je pense que vous obtiendrez de meilleures réponses (c'est-à-dire certaines). – machineghost

+0

Merci monsieur, même si je pensais y compris le code descriptif et exactement ce que j'essayais de faire était assez clair. Affiche première fois, mais en raison de votre réponse un peu condescendante, ne sera probablement pas poster à nouveau. Comme il n'y a aucune de mes recherches sur ce site a abouti à quelque chose près d'une réponse pour cela. –

Répondre

0

En fin de compte, je devenais trop compliqué. Tout ce que je devais faire était de trouver le href (news.aspx) à partir de la chaîne de menu JSON et obtenir le sous-menu. Je pris ce que j'avais ci-dessus et distillée jusqu'à ces quelques lignes de code:

<div id="LeftNavDiv"></div> 
<script type="text/javascript"> 
$(function(){ 
var sidemenu = $("a[href$='news.aspx']").next("ul").get(); 
$("#LeftNavDiv").html(sidemenu);  
}); 
</script> 

Il crée de façon dynamique cette div et liste non ordonnée en tirant même le style, par exemple, « menu haut » de la chaîne de menu JSON:

<div id="LeftNavDiv"> 
    <ul> 
     <li class="menu-top"/> 
     <li><a href="sandbox1.aspx">Lorem ipsum</a></li> 
     <li class="menu-bot"/> 
    </ul> 
</div> 
Questions connexes