如何使用addClass removeClass切换所有其他div?

时间:2013-12-09 00:38:15

标签: jquery toggle

我正在尝试为切换内容自定义现有的一些jQuery代码,以允许我关闭所有其他div而不是我点击的那个。

代码:

$('.et_lb_toggle_title').click(function(){
        var $this_heading = $(this),
            $module = $this_heading.closest('.et_lb_toggle'),
            $content = $module.find('.et_lb_toggle_content');

        $content.slideToggle(700);

        if ( $module.hasClass('et_lb_toggle_close') ){
            $module.removeClass('et_lb_toggle_close').addClass('et_lb_toggle_open');
        } else {
            $module.removeClass('et_lb_toggle_open').addClass('et_lb_toggle_close');
        }
    });

目前,这允许打开多个div。我想要实现的是当你打开一个div,其他所有人都关闭。

我想我需要使用

定位所有其他div
$('.et_lb_toggle_title').not($(this))

我已经挣扎了一段时间,现在我的头在旋转!

如果它有帮助,这是一个jfiddle。注意(div通常默认关闭。)

任何帮助,一如既往地非常感谢!

1 个答案:

答案 0 :(得分:1)

尝试

var $contents = $('.et_lb_toggle_content').hide();
var $modules = $('.et_lb_toggle').addClass('et_lb_toggle_close');
$('.et_lb_toggle_title').click(function(){
    var $this_heading = $(this),
        $module = $this_heading.closest('.et_lb_toggle'),
        $content = $module.find('.et_lb_toggle_content');

    $content.stop(true, true).slideToggle(700);
    $contents.not($content).stop(true, true).slideUp();

    $module.toggleClass('et_lb_toggle_open et_lb_toggle_close');
    $modules.not($module).removeClass('et_lb_toggle_open').addClass('et_lb_toggle_close');
});

演示:Fiddle