2009-11-18 5 views
0

J'utilise jQuery pour un menu de navigation verticale du site, tous les liens du site. J'ai la fonctionnalité de base de travail, mais je suis à une perte quant à l'if-else correct pour accomplir ce qui suit:jquery logique conditionnelle pour la page en cours

Comme le code est, les éléments de sous-menu sont toujours cachés initialement, mais je veux qu'ils commencent si le li ou l'un de ses fils lis est assigné à la page courante de la classe. Le code tel qu'il est est:

(function(){ 
    $('li:has(ul)') 
    .click(function(event){ 
    if (this == event.target || $(event.target).parent()[0] == this) { 
     if ($(this).children('ul').is(':hidden')) { 
     $(this) 
     .css('list-style-image','url(minus.gif)') 
     .children('ul').slideDown(); 
     } 
     else { 
     $(this) 
     .css('list-style-image','url(plus.gif)') 
     .children('ul').slideUp(); 
     } 
    } 
    }) 
    .css({ 
    cursor:'pointer', 
    'list-style-image':'url(plus.gif)' 
    }) 
    .children('ul').hide(); 

    $('li:not(:has(ul))').css({ 
    cursor: 'default', 
    'list-style-image':'none' 
    }); 
}); 

Espérons que quelqu'un peut me mettre sur la bonne voie.

Bob McLeod

Répondre

0

je ferais une fonction showMenuItem() et l'appeler dans les deux endroits où vous souhaitez afficher un élément de menu.

$(function() { $('.currentpage').each(function() { 
    if ($(this).parents().filter('ul').is(":hidden")) { 
    showMenuItem($(this).parents().filter('ul')); 
    } else { 
    showMenuItem(this); 
    } 
}}); 
+0

pourquoi ne pas faire la Css() et .children ('ul') sur $ ('de currentpage.') Se place du each()? –

+0

Chaque fois que je travaille avec un cours, je suppose qu'il pourrait y en avoir plus d'un à un moment donné dans le futur. Si c'était #currentpage, je n'utiliserais pas le .each(). –

+0

Oh, eh bien alors. Je pensais qu'il renvoyait une liste. –

1

Je veux qu'ils commencent affichés si le li sélectionné par l'utilisateur ou l'un de ses enfants lis est attribué la currentpage de classe.

Que diriez-vous par la suite faire:

$('.currentpage').parents('ul').show(); 
Questions connexes