jQuery slideUp()影响其他列表的slideDown()

时间:2015-04-24 16:03:54

标签: javascript jquery html

我遇到了问题。我有一些清单项目。单击列表时,它将自己的子项将打开,并将添加'.open'类。单击该'.open'课程时,该列表的子项将被隐藏。所以,我的代码是这样的:

$('body').on('click', '.list-group li a', function() {
    // hide all other child
    $('.list-group .child').hide();
    $('.list-group li a').removeClass('open');

    // Open this list's child
    $(this).addClass('open');
    $(this).parent().find('.child').slideDown();
});

$('body').on('click', '.list-group li a.open', function() {    
    // hide this list's child
    $(this).removeClass('open');
    $(this).parent().find('.child').slideUp();
});

但是,在隐藏$(this)列表的孩子时,它会首先尝试slideDown(),然后slideUp()!我可以理解这段代码可能对此负责:

// hide all other child
$('.list-group .child').hide();
$('.list-group li a').removeClass('open');

如何解决这个问题?

Fiddle Work

1 个答案:

答案 0 :(得分:3)

在应用list_data时,您的click个侦听器似乎都会触发。在.open函数中使用:not选择器似乎可以解决此问题

.on('click', '.list-group li a')

JSFiddle Link