0

这是我的html:

<ul id="dmenu">
    <li><a href="#">menu item one</a></li>

    <li><a href="#">menu item two</a>
            <ul class="displayNone">
                <li><a href="#">menu item one</a>
            </ul>
    </li>
</ul>

当用户单击其中一个 a 标签时,我希望我的代码检查父 li 标签中是否有任何 ul 标签。如果有,那么我想阻止 a 标签的默认操作和 slideToggle 子 ul 元素

我的jQuery自动取款机:

$('#dmenu > a').click(function(e) {
    if (this.parent().has('ul')) {
        e.preventDefault();
        $(this).children().slideToggle();
    }
});
4

1 回答 1

1

您正在对a

更改$(this).children().slideToggle();

$(this).parent().children('ul').slideToggle();

您的选择器#dmenu > a也错误-您的顶级菜单没有该ID,如果有,则没有直接锚作为ul的子级-删除>并将ID添加dmenu到您的顶部ul或容器元素

编辑

正如 Austin 指出的那样,由于您有嵌套列表,您可能希望将点击事件限制在顶层,以便您可以使用#dmenu > li a

例子

于 2013-07-18T10:39:06.313 回答