Ich verwende zwei jQuery-Funktionen auf einer FAQ-Seite. Der erste wird aktiviert, wenn auf eine Fragenüberschrift (h4) geklickt wird. Es gleitet im Wesentlichen, um diese Antwort zu zeigen, stellt aber auch sicher, dass alle anderen Antworten geschlossen sind (d. H. Nur eine Antwort ist zu einem Zeitpunkt offen). Die zweite Funktion ist eine, die ALLE Fragen auf der Seite anzeigt/verbirgt.JQuery Alle ein-/ausblenden (FAQ-Seite)
Mein Problem tritt immer dann auf, wenn ein Benutzer eine FAQ-Antwort geöffnet hat (durch die erste Funktion aktiviert) und dann versucht, alle anzuzeigen/zu verbergen. Die show/hide-Funktion verwendet ein Toggle-System, das bewirkt, dass ALLE Fragen umgestellt werden, einschließlich der Frage, die bereits angezeigt wird. Das Ergebnis ist, dass (mit say, show all) alle Fragen angezeigt werden, mit Ausnahme der Frage, die bereits angezeigt wurde. Diese Antwort ist versteckt (weil sie umgeschaltet wurde). Idealerweise würde es offen bleiben, da es bereits geöffnet war.
Was ist die beste Lösung für dieses Problem? Die beiden jQuery-Funktionen sind wie folgt:
<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>
Für Demozwecke, die Seite an dem ich arbeite ist hier verfügbar: http://r-8.us/~richard.r8us/faq
Verwenden Sie nicht "Toggle" verwenden Sie stattdessen "Hide \ Show". –
Warum lässt du es nicht immer alle Antworten verstecken? Warum benötigt der Benutzer die Funktionalität, um alle Antworten gleichzeitig anzuzeigen? –
@IliaFrenkel Danke! Dies ist, was ich ging (wie in der Antwort, die ich wählte). –