Javascript if else问题移动Jquery切换菜单

时间:2011-10-25 12:33:38

标签: javascript mobile if-statement toggle jquery

我正在尝试为移动网站制作一个jquery切换菜单。

我设法创建了一个切换菜单,其中包含+和 - 切换时以及

当前版本http://jsfiddle.net/9Dvrr/7/

现在我正在尝试创建一个显示“>”的if else语句没有孩子的时候。

实验http://jsfiddle.net/9Dvrr/6/

问题在于,我似乎可以解决这个问题。

提前致谢,

瑞克

2 个答案:

答案 0 :(得分:0)

检查长度属性是否有子级时,需要检查长度属性。否则,您正在检查的是结果是否为非null ...并且即使选择器不匹配也始终为非null,因为它将返回jQuery。它将是空的任何元素,但仍然是一个对象,因此非空。

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

答案 1 :(得分:0)

下面这段代码会做你想要的,但它绝对可以使用一点重构。主要是向您展示如何实现它:

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