2013-12-09 93 views
0

我想定製一個現有的jQuery代碼切換內容,讓我關閉所有其他的div比我點擊。如何使用addClass removeClass切換所有其他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時,所有其他人都關閉。

我想我需要使用

$('.et_lb_toggle_title').not($(this)) 

我一直在用它掙扎了一會兒,現在我的頭在旋轉,以定位其他所有的div!

這裏有一個jfiddle如果有幫助。 NB(這些div通常默認是關閉的)。

任何幫助,一如既往將非常感激!

回答

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

+0

這是即期。非常感謝Arun! – AshBestos