当前页面的jquery条件逻辑

时间:2009-11-18 20:49:00

标签: javascript jquery menu

我正在使用jQuery作为垂直站点导航菜单,站点内的所有链接。我有基本的功能,但是对于正确的if-else来说,我不知道如何完成以下任务:

如代码所示,子菜单项始终是最初隐藏的,但是如果用户选择的li或其子lis之一被分配了类currentpage,我希望它们开始显示。 目前的代码是:

(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'
  });
});

希望有人能让我走上正轨。

鲍勃麦克劳德

2 个答案:

答案 0 :(得分:1)

  

如果用户选择的li或其中一个子lis被分配了类currentpage,我希望它们开始显示。

之后怎么做:

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

答案 1 :(得分:0)

我会创建一个showMenuItem()函数,并在要显示菜单项的两个地方调用它。

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