2011-03-22 108 views
0

我有一個按鈕切換是否引用的div是否可見。本來,我用的是代碼:jQuery .toggle(showOrHide):執行問題

$('#search-options-btn').click(function() { 
    if ($('#search-options').is('.hidden')) { 
     $('#search-options').removeClass('hidden'); 
    } else { 
     $('#search-options').addClass('hidden'); 
    } 
}); 

然而,在試圖尋找更清潔的代碼,我遇到了jQuery toggle()方法,根據API,它有一個方法實現

.toggle(showOrHide)  
showOrHide: A Boolean indicating whether to show or hide the elements. 

在此之前描述使我相信這是一種通過傳遞...標識符來顯示或隱藏的快捷實現方法? showOrHide納入toggle()方法。

當然,嘗試此:

$('#search-options-btn').click(function() { 
    $('#search-options').toggle(showOrHide); 
}); 

產生錯誤在我的螢火控制檯:

showOrHide is not defined 
[Break On This Error] $('#search-options').toggle(showOrHide); 

我也試着定義showOrHide作爲初始化爲false一個布爾值;錯誤消失,但問題不是固定的。

據jQuery的網上API,這應該是等同於

if (showOrHide == true) { 
    $('#foo').show(); 
} else if (showOrHide == false) { 
    $('#foo').hide(); 
} 

除非我完全缺少的是如何工作的。任何人都可以填補我在這裏做錯了嗎?我一直無法找到類似的實現。

回答

6

你應該只需要toggle(),沒有別的。

$('#search-options-btn').click(function() { $('#search-options').toggle(); });

0

showOrHide是內部名稱。你傳遞一個布爾值:

$('#...').showOrHide(true) 

,如果你想的項目是可見的,false如果你想讓它隱藏起來。

0

它只是階級之間,而不是與布爾切換..

$('#search-options-btn').click(function() { $('#search-options').toggle('yourClassName'); }); 

如果發現yourClassName,然後它會刪除同一,否則會加重它。

+0

不,你正在考慮'.toggleClass()'方法。 '.toggle()'方法_does_(可選)接受布爾值。 – nnnnnn 2014-05-14 12:19:58