Jquery:如何使用if语句查找嵌套的ul

时间:2014-01-21 13:08:48

标签: jquery if-statement navigation nested

我试图建立导航。我想知道是否< li>有一个< ul>。 如果< li>有一个< ul>那么< ul>应该fadeIn else它应该打开链接。我已经在网上看了..无法找到解决我问题的完美解决方案。

这是我的标记:

    <nav id="mobile-nav">
        <ul>
            <li><a href="#" title="Nav">Link</a>
                <ul class="second">
                    <li><a href="#" title="Sub Nav">Link 2</a>
                        <ul>
                            <li><a href="#" title="Sub Nav 2">Link 3</a></li>
                            <li><a href="#" title="Sub Nav 2">Link 3</a></li>
                        </ul>
                    </li>
                    <li><a href="#" title="Sub Nav">Link 2</a></li>
                    <li><a href="#" title="Sub Nav">Link 2</a></li>
                </ul>
            </li>
            <li><a href="#" title="Nav">Link</a></li>
            <li><a href="#" title="Nav">Link</a></li>
            <li><a href="#" title="Nav">Link</a></li>
        </ul>
    </nav>

jquery的:

$('#mobile-nav').on('click', 'a', function(){

if($(this).parent().has('ul')){
    alert("has ul");
    return false;
} else {
    alert("no ul");
    return false;
}

});

我测试了它,它总是给我&#34;有ul&#34;。

我也试过这个:

if($(this).closest('li').has('ul')){
alert("has ul");
return false;
} else {
alert("no ul");
return false;
}

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

应该是:

$(this).parent().find('ul').length

<强> Working Fiddle

答案 1 :(得分:2)

如果你想在bool上进行测试,那么你需要使用length

示例

if($(this).parent().has('ul').length){
}