JQuery условная логика для текущей страницы - PullRequest
0 голосов
/ 18 ноября 2009

Я использую jQuery для вертикального меню навигации по сайту, все ссылки внутри сайта. У меня работает базовая функциональность, но я затрудняюсь с выбором правильного if-else для выполнения следующего:

При существующем коде элементы подменю всегда изначально скрыты, но я хочу, чтобы они начали показываться, если выбранному пользователем li или одному из его дочерних списков назначена текущая страница класса. Код в таком виде:

(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 ]

1 голос
/ 19 ноября 2009

Я хочу, чтобы они начали показываться, если выбранному пользователем li или одному из его дочерних списков назначена текущая страница класса.

Как насчет того, чтобы потом делать:

$('.currentpage').parents('ul').show();
0 голосов
/ 18 ноября 2009

Я бы сделал showMenuItem() функцию и вызвал бы ее в обоих местах, где вы хотите показать пункт меню.

$(function() { $('.currentpage').each(function() {
  if ($(this).parents().filter('ul').is(":hidden")) {
    showMenuItem($(this).parents().filter('ul'));
  } else {
    showMenuItem(this);
  }
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...