第二次点击后做点什么?

时间:2014-03-12 18:48:56

标签: jquery

这是我的下拉菜单代码示例。

    $( document ).ready(function() {
       $('.collapsedArchives ul li').click(function(){
            $('.collapsedArchives ul li ul').slideDown('slow');
       });
       $('.collapsedArchives ul li ul').click(function(){
            $('.collapsedArchives ul li ul li').slideDown('slow');
       });
    });

当用户点击slideDown的选择器点击第二次时,使用slideUp动画,id应该做什么?

感谢。

3 个答案:

答案 0 :(得分:2)

jQuery有.slideToggle( \[duration \] \[, complete \] )

$('.collapsedArchives ul li').click(function(){
    $(this).find('> ul').slideToggle('slow');
});

现在您可能希望使用event.stopPropagation()

取消点击的冒泡
$('.collapsedArchives ul li').click(function(evt){
    evt.stopPropagation();
    $(this).find('> ul').slideToggle('slow');
});

答案 1 :(得分:1)

另一种选择是将变量存储在对象

$(item).data("somevar", true);

你可以检查,根据情况翻转,然后有条件路由发生的事情。

答案 2 :(得分:1)

我没有清楚地理解这个问题,但是根据提供的答案,我猜你可以使用this,这样你就可以打开/关闭li ul并将其他元素留在他们的身上当前状态opencloesed

$('.collapsedArchives ul li').click(function () {
    $(this).find("ul").slideToggle('slow');
});

但是我猜你可能想要关闭所有其他il ul,而不是你刚刚点击的那个:{/ p>

$('.collapsedArchives ul li').click(function () {
    $(".collapsedArchives ul li ul").slideUp('slow');
    $(this).find("ul").slideDown('slow');
});

检查此demo