2 回答 2

1

你错过了一些结束标签。

请参阅更新的小提琴

$(".menu li").on('click', function(e) {
    e.stopPropagation();
    $(this).children('ul').slideToggle();
});

使用该on()方法,您可以更好地控制您的功能。您需要的是stopPropagation()方法:它可以防止单击事件将 dom 树冒泡到li可以滑动切换它的父级。

此外,通过将 clicked 的子项过滤li为 only ul's,您可以更明确地了解您想要切换的内容。

于 2013-03-13T10:15:43.217 回答
0

Flauwekeul 的替代版本,使用.on()事件委托:

$('.menu').on('click', 'li', function(event){
    if (event.target != this) {
     return;//dont want bubbled up events
    }
    $(event.target).children('ul').slideToggle();
});

在http://jsfiddle.net/fzy48/5/中查看

使用事件委托的优点是我们只附加一个事件处理程序(在父.menu元素中),而不是每个li元素一个事件处理程序。

于 2013-03-13T10:25:12.747 回答