开发者问题收集

Javascript - jquery、accordion

2012-05-23
1980
<div id="wrapper">
    <div class="accordionButton">Personal Information</div>
    <div class="accordionContent">      
    Personal text
    </div>
    <div class="accordionButton">Experience</div>
    <div class="accordionContent">
    Experience information
    </div>
    <div class="accordionButton">Training</div>
    <div class="accordionContent">
    No skills
    <div class="accordionButton">Career</div>
    <div class="accordionContent">
    Never had a job
    </div>
    <div class="accordionButton">Referers</div>
    <div class="accordionContent">
    None.
    </div>
</div>

此代码按我的要求工作。它是一个水平手风琴。但是,当它加载到我的网页上时,必须隐藏内容 div 才能使 jquery 工作。

Jquery:

$(document).ready(function() {

    // When div is clicked, hidden content divs will slide out  
    $('div.accordionButton').click(function() {
        $('div.accordionContent').slideUp('normal');    
        $(this).next().slideDown('normal');
    });


    // Close all divs on load page  
    $("div.accordionContent").hide();

});

如果我不隐藏 div,则所有 div 都会显示。有没有办法在不更改太多 jquery 的情况下显示第一页,或者我必须为按钮和内容设置不同的类名,以便单击指定按钮时,附属内容将从该按钮 div 滑出?

3个回答

您可以使用 jquery 选择器作为第一个 div,并将其设置为 show() 。类似于:

  $('div.accordionContent:first').show();
Akshat Goel
2012-05-23

我认为你必须尝试这个:-

<script type="text/javascript">
    $.fn.accordion = function(settings) {
        accordion = $(this);
    }
    $(document).ready(function($) {
        $('div.accordionContent').click(function() {

            if($(this).next().is(":visible")) {
                $(this).next().slideDown();
            }

            $('div.accordionContent').filter(':visible').slideUp();
            $(this).next().slideDown();
            return false;
        });
    });

</script>
FrontEnd Expert
2012-05-23

为什么不使用 slideToggle() 来代替 IF 语句....

BlueEyes
2012-05-24