javascript - 简单的滑动切换不起作用

标签 javascript jquery css accordion

我是 JS 的新手,现在正在学习它。我试图用 toggleclass 和 toggleslide 实现简单的 Accordion ,但我无法弄清楚是什么导致我的代码无法运行!

<div class="outer-wrapper collapse">
    <div class="inner-wrapper1">title 1</div>
    <div class="inner-wrapper2">
        something written
    </div>
</div>

<div class="outer-wrapper collapse">
    <div class="inner-wrapper1">title 1</div>
    <div class="inner-wrapper2">
        something written
    </div>         
</div>

JS:

$('.inner-wrapper1').click(function(e){
    $(this).parent().toggleClass("collapse expand"); 
    $(this).parents('div.outer-wrapper').find('.inner-wrapper2').slideToggle('slow');
});

CSS:

.outer-wrapper.collapse .inner-wrapper2 {
    display :none;
}
.outer-wrapper.expand .inner-wrapper2 {
    display :block;
}

最佳答案

您不需要额外的类(class)来展示它。 SlideToggle 自己做。

HTML:

<div class="outer-wrapper">
    <div class="inner-wrapper1">title 1</div>
    <div class="inner-wrapper2 hide">
        something written
    </div>
</div>

CSS:

.hide { display: none }

JS:

$('.inner-wrapper1').click(function(e){
    $(this).parent().find('.inner-wrapper2').stop().slideToggle();
});

工作演示 - http://jsfiddle.net/d42cfxcb/

更新

好吧,你可以进一步简化 -

html

<div class="outer-wrapper">
    <div>title 1</div>
    <div>something written</div>
</div>

JS

var $accordion = $('.outer-wrapper');

$accordion.each(function(){
    // or you can do this with CSS using hide class- .hide { display: none }
    $(this).children('div:eq(1)').hide();
});

$accordion.children('div:eq(0)').click(function(){
    $(this).parent().children('div:eq(1)').stop().slideToggle();
});

工作演示 - http://jsfiddle.net/d42cfxcb/1/

关于javascript - 简单的滑动切换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611429/

相关文章:

javascript - 带有 codeigniter 3 的图表栏

javascript - 如何将视频流发送到 node.js 服务器

javascript - 如何正确重定向所选列表

javascript - 在图片url中添加字符串

javascript - 调整 JavaScript 数组中幻灯片图像的大小以适合视口(viewport)

javascript - 根据 1 个特定值的标识将对象拆分为多个有序数组

javascript - 对象数组不断覆盖以前的条目

jquery - 为什么 jQuery onbeforeunload 在 Chrome 和 Firefox 中不起作用?

jquery - 将 HTML 标签替换为新标签

css - 背景中的点图像不可见