这是我的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>
当用户点击其中一个标签时,我希望我的代码检查父标签中是否有任何ul标签。如果有,我想防止a标签的默认动作和slideToggle子ul元素
我的jquery atm:
$('#dmenu > a').click(function(e) {
if (this.parent().has('ul')) {
e.preventDefault();
$(this).children().slideToggle();
}
});
答案 0 :(得分:1)
您正在对a
将$(this).children().slideToggle();
更改为
$(this).parent().children('ul').slideToggle();
您的选择器#dmenu > a
也是错误的 - 您的顶级菜单没有该ID,如果确实没有直接锚点作为ul的子项 - 删除>
并添加ID dmenu
向您ul
或容器元素
修改强>
正如Austin所指出的,由于您有嵌套列表,因此您可能希望将点击事件限制在顶级,以便您可以使用#dmenu > li a