Pergunta

Eu sou relativamente novo para jQuery e JSON e este é meu primeiro post aqui, por favor, tenha paciência comigo.

Eu tenho uma seqüência de menu JSON com uma série de três itens (nome, URL, ID - O nosso número de ID de página interna) e da navegação de nível superior constrói bem. ciclo I através dos itens de nível superior e chamar uma função recursiva para obter os sub menus.

O que estou tentando fazer agora é em uma parte separada da página web, use a seqüência de menu JSON para encontrar uma página de nível superior (news.aspx, por exemplo) e construir um menu para essa página e do submenu itens para mostrar em uma navegação do lado esquerdo que só a ser exibido nas páginas de notícias.

O problema que estou tendo é este script abaixo funciona sem quaisquer erros de Javascript, no entanto, ele está puxando a navegação de nível superior. A navegação de nível superior é essencialmente chamado da mesma forma, exceto as funções são CreateMenu () e CreateMenuRecursive ().

Alguns do código que estou usando aqui que eu comecei a partir de ler outros posts sobre este site, mas eu não encontrei uma resposta para isso. Agradecemos antecipadamente por qualquer ajuda.

<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>
Foi útil?

Solução

Como se vê, eu estava fazendo isso muito complicado. Tudo o que eu tinha a fazer era encontrar a href (news.aspx) a partir da cadeia de menu JSON e obter o submenu. Peguei o que eu tinha acima e destilado para baixo a estas poucas linhas de código:

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

É dinamicamente cria este div e não ordenada lista puxando até mesmo o estilo, ou seja, "Menu-top" da seqüência 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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top