2012-07-23 90 views
0

我有這樣的jQuery代碼:jQuery的切換不能正常工作

$('.item_bar_action_holder_drop a').click(function() { 
      var item_bar = $('.item_bar_action_holder_actions'); 
      if(item_bar.is(':visible')) { 
       $(this).removeClass('active'); 
      } else { 
       $(this).addClass('active'); 
      } 
      item_bar.slideToggle('fast', function() { 
      }); 
     }); 

這裏的問題是,當我點擊多少次按鈕「活動」類將設定爲關閉面板和它的錯。我不明白爲什麼它發生。

+0

你只有1個面板吧? – 2012-07-23 10:50:40

+0

你能告訴我們你的HTML和CSS嗎? – 2012-07-23 10:50:55

回答

1

檢查是否item_bar被動畫的時候,不要再排隊行爲,如果它是:

$('.item_bar_action_holder_drop a').click(function() { 
    var item_bar = $('.item_bar_action_holder_actions'); 
    if (item_bar.is(':animated')) { 
     return; 
    } 
    ... 
}); 
+0

對不起,它不工作。它的褲子像這樣 – 2012-07-23 10:28:45

+0

@JohnMark也許你可以提供一個演示來展示你正在經歷的確切行爲。 http://jsfiddle.net/ – Petah 2012-07-23 10:31:06

0

Basic slideToggle() example.

我猜你的活動類的CSS是=顯示:塊;你的item_bar的默認CSS是display:none;如果我是正確的;你可以用這種方式太:

$(document).ready(function() { 
    $('.item_bar_action_holder_drop a').click(function() { 
     var item_bar = $('.item_bar_action_holder_actions'); 

     item_bar.removeClass('active');//removes class from all 
     $(this).addClass('active');//adds class clicked one 

     if(item_bar.is(':visible')) {//edited here ! 
     item_bar.slideToggle('fast',function() { 
      $(this).removeClass('active');//removes class when animate complete 
     }); 
     } 
    }); 
    //if you want to show first panel when your document is ready 
    $('.item_bar_action_holder_actions:first').show().addClass('active'); 
}); 

注意:您沒有顯示你的HTML,所以我試圖猜測您的HTML。

+0

它是一個好主意,但是這個代碼不能正常工作。它會永遠不會打開,因爲面板開始關閉 – 2012-07-23 10:34:29

+0

我更新了我的答案,你可以再次檢查出來請 – 2012-07-23 10:44:16

+0

對不起,我發現問題,新代碼是: – 2012-07-23 10:52:45