我在FAQ頁面上使用了兩個jQuery函數。每當點擊標題(h4)時,第一個激活。它基本上可以顯示答案,並確保所有其他答案都已關閉(即一次只打開一個答案)。第二個功能是顯示/隱藏頁面上的所有問題。JQuery顯示/全部隱藏(FAQ頁面)
每當用戶打開常見問題解答(由第一個功能激活),然後嘗試執行全部顯示/隱藏操作時,就會出現我的問題。顯示/隱藏功能使用切換系統,所以這會導致所有問題切換,包括已經顯示的問題。結果是(使用說,顯示全部)顯示除了已經顯示的那個之外的所有問題。這個答案是隱藏的(因爲它被切換)。理想情況下,它會保持開放狀態,因爲它已經開放。
這個問題的最佳解決方案是什麼?這兩個jQuery的功能如下:
<script>
// Clicking a question will show that answer and hide all others
$(function() {
$('#faqQuestions h4').each(function() {
var tis = $(this),
state = false,
answerNext = tis.next('div').hide().css('height','auto').slideUp();
answerAll = $('#faqQuestions').children('div').hide().css('height','auto').slideUp();
tis.click(function() {
state = !state;
answerAll.slideUp(state);
$('#faqQuestions').children('h4').removeClass('active');
answerNext.slideToggle(state);
tis.addClass('active',state);
});
});
});
</script>
<script>
// Show/hide all questions
var toggle = false;
$(function() {
$('a.toggle').click(function(e) {
var $this = $(this);
$('#faqQuestions div').toggle(300,function() {
if(!toggle) {
$this.text('Hide All Questions/Answers');
toggle = !toggle;
}else {
$this.text('Show All Questions/Answers');
toggle = !toggle;
}
});
e.preventDefault();
});
});
</script>
爲了演示,我的工作頁面,請訪問:http://r-8.us/~richard.r8us/faq
請勿使用'toggle'來代替使用'hide \ show'。 – 2012-04-13 03:55:41
爲什麼不讓它總是隱藏所有答案?爲什麼用戶需要功能來一次顯示所有答案? – 2012-04-13 04:00:08
@IliaFrenkel謝謝!這就是我所用的(如我選擇的答案中所示)。 – 2012-04-13 04:09:18