Javascript, если еще проблемы с меню переключения мобильного Jquery

#javascript #mobile #if-statement #toggle #jquery

#javascript #Мобильный #if-оператор #переключить #jquery

Вопрос:

Я пытаюсь создать меню переключения jquery для мобильного веб-сайта.

Мне удалось создать меню переключения с и — при переключении, а когда нет

Текущая версия: http://jsfiddle.net/9Dvrr/7 /

Теперь я пытаюсь создать оператор if else для отображения «>», когда дочерних элементов нет.

Эксперимент: http://jsfiddle.net/9Dvrr/6 /

Проблема в том, что я просто могу это понять..

Заранее спасибо,

Рик

Ответ №1:

Вам необходимо проверить свойство length при проверке, есть ли у него дочерние элементы. В противном случае все, что вы проверяете, это то, является ли результат ненулевым или нет … и он всегда будет ненулевым, даже если селектор не совпадает, потому что он вернет jQuery. В нем не будет никаких элементов, но, тем не менее, он будет объектом и, следовательно, ненулевым.

 if (element.has('ul').children('a').length > 0) {
    element.prepend("<span>  </span>");
  

Ответ №2:

Приведенный ниже код будет делать то, что вы хотите, но ему определенно не помешал бы небольшой рефакторинг. В основном это для того, чтобы показать вам, как вы можете достичь этого просто :

 $('#menu-mobiel ul').hide();

$.each($('#menu-mobiel li'), function(i, value) {
    var $this = $(this);

    if($this.find('ul a').length > 0) {
        $this.find('a').append("<span>  </span>")
        .addClass('plus')
        .click(function() {
            togglePlus($(this));
            $(this).next('.sub-menu').slideToggle('normal');
        });
    }
    else
    {
        $this.find('a').append("<span>> </span>");
    }
})

function togglePlus(element) {
    element = $(element);
    if (element.hasClass('plus')) {
        element.removeClass('plus').addClass('minus');
        element.children('span').text('- ');
    } else {
        element.removeClass('minus').addClass('plus');
        element.children('span').text('  ');
    }
}