首先点击手风琴不工作

时间:2018-02-06 13:35:29

标签: javascript jquery accordion

我的手风琴不能正常工作。

在您第一次单击时,内容将显示。 。 。

否则,如果您第二次点击并在确实出现之后。

任何帮助都会很棒,

这是我的小提琴:

https://jsfiddle.net/ugddnof4/

所有的内容都在那里。

以下是我的js:

(function($){     $('。accordion> li:eq(0)a')。addClass('active')。next()。slideDown();

$('.accordion a').click(function(j) {
    var dropDown = $(this).closest('li').find('ul.accordion-content li, p, ul.accordion-content');

    $(this).closest('.accordion').find('ul.accordion-content li, p, ul.accordion-content').not(dropDown).slideUp();

    if ($(this).hasClass('active')) {
        $(this).removeClass('active');
    } else {
        $(this).closest('.accordion').find('a.active').removeClass('active');
        $(this).addClass('active');
    }

    dropDown.stop(false, true).slideToggle();

    j.preventDefault();
});
 })(jQuery);

非常感谢您的所有时间!

1 个答案:

答案 0 :(得分:1)

这似乎有效

https://jsfiddle.net/9erfLokh/1/

新js:

(function($) {
    $('.accordion > li:eq(0) a').addClass('active').next().slideDown();

    $('.accordion a').click(function(j) {
        var dropDown = $(this).closest('li').find('ul.accordion-content');
        if ($(this).hasClass('active')) {
            $(this).removeClass('active');
        } else {
            $(this).closest('.accordion').find('a.active').closest('li').find('ul.accordion-content').slideUp();
            $(this).closest('.accordion').find('a.active').removeClass('active');
            $(this).addClass('active');
        }

        dropDown.stop(false, true).slideToggle();

        j.preventDefault();
    });
})(jQuery);

我认为你的问题主要是dropDown返回了一整套dom对象,而你在所有这些对象上运行slideToggle。如果有一个活动版本,此版本将仅关闭一个块,并且将始终切换所单击的版块,但要注意仅在单个元素上运行slideToggle