jQuery slideToggle嵌套列表ul li结构

时间:2011-05-25 19:12:59

标签: jquery nested-lists

   $("#nav ul li:not(:has(li.current))")
       .find("ul").hide().end() // Hide all other ULs
       .click(function() {
           $(this).children('ul').slideToggle('fast');
       });

我有上面的代码,它使用嵌套的ul li,并在点击时展开级别。但是,我想在第二次点击时收缩该级别,但上述合同的所有级别,而不仅仅是点击的级别。

修改:例如,请参阅this

2 个答案:

答案 0 :(得分:2)

我不是百分之百确定你打算做什么,但我认为你可以通过检查事件是否源自处理程序元素来避免不必要的滑动:

$(document).ready(function() {
    $("#nav ul li:not(:has(li.current))").find("ul").hide().end() // Hide all other ULs
    .click(function(e) {
        if (this == e.target) {  // if the handler element is where the event originated
            $(this).children('ul').slideToggle('fast');
        }
    });
});

jsFiddle

答案 1 :(得分:0)

你可以使用toggle()并返回false来停止传播: Use This Example