2017-04-22 59 views
2

我有以下一段代碼,我需要顯示或隱藏面板。我的問題是,show()僅適用於其他點擊。jQuery show()和hide()在同一個循環內

var allPanels = $(".panel"); 
allPanels.hide(2000); 
allPanels.show(); 

我想知道show()不一致的原因。

+0

我想如果我使用allPanels.hide(2000);和allPanels.show(1000);或allPanels.show(2000);它的工作原理,但不是如果allPanels.show(); –

+0

你正在使用動畫,所以你可以在他們被隱藏後拍攝'allPanels.hide(2000,function(){$(this).show()});' –

+1

謝謝Alon和@Rana - 我想我不清楚足夠。我想知道爲什麼show()不能顯示元素,除非show(1000)被調用。儘管如此,謝謝你的回覆。 –

回答

1

這不起作用,因爲您在.hide(2000)中設置時間。您有以下方式::

HTML寫

<div class="panel" >This is a DIV</div> 
<button type="button" class="buttonClick" >Click me</button> 

JQUERY

$(document).ready(function (e) { 
    $(document).on('click', '.buttonClick', function() { 
     var allPanels = $(".panel"); 
     allPanels.hide(2000, function(){ 
      allPanels.show(); 
     }); 
    }); 
}); 
+0

@Sujit如果幫助他人是正確的,請接受答案。 –

0

一個更簡單的方法是.stop()當前的動畫之前你開始另一個。

var allPanels = $(".panel"); 
allPanels.hide(2000); 
allPanels.stop().show(); 

這樣你就不必把代碼放在回調中。 雖然會注意到,但這樣做會明確地暫停動畫,忽略其當前狀態。

+0

allPanels.stop()。show();沒有工作,拋出一個例外。 –

+0

@sujitkumar http://www.bootply.com/eXJ5V94FqH – Stavm

0

當我刪除了動畫計時從

var allPanels = $(".panel"); 
allPanels.hide(2000); 
allPanels.stop().show(); 

改爲

var allPanels = $(".panel"); 
allPanels.hide(); 
allPanels.stop().show();`enter code here` 

它開始工作。隱藏和顯示無縫工作。謝謝。但任何人都可以說爲什麼隱藏和顯示時間不起作用。