2012-02-14 3 views
0

Итак, у меня есть меню аккордеона для отображения результатов и кнопка «Показать все» вверху, чтобы пользователю не нужно было щелкнуть каждый, чтобы развернуть его. Когда они нажимают «Показать все», все содержимое расширяется, а текст кнопки переключается на «Скрыть все».Как проверить состояние слайдов JQuery?

Однако я хочу убедиться, что если пользователь решит вручную закрыть все разделы самостоятельно, кнопка снова переключится с «Скрыть все» на «Показать все».

Я хотел бы, чтобы это работало и наоборот, на всякий случай они открывают все (или, возможно, любое их число). Было бы неплохо, если бы я мог получить кнопку, а затем сказать «Скрыть все».

Имеют смысл? Это должно быть относительно просто ... Я просто новичок в JQuery, и я не уверен, как проверить состояние переключения. Вот код, который я должен развернуть все разделы.

function expandAll() { 
     if(document.getElementById("displayMajors").innerHTML == "Show All") { 
      $('.accordionContent').slideDown('normal'); 
      document.getElementById("displayMajors").innerHTML = "Hide All"; 
     } 
     else { 
      $('.accordionContent').slideUp('normal'); 
      document.getElementById("displayMajors").innerHTML = "Show All"; 
     } 
    } 

«displayMajors» является идентификатором кнопки, и «accordionContent» класс дел.

+0

Почему вы смешиваете jQuery с простым JavaScript? Кроме того, можете ли вы опубликовать остальную часть кода и HTML? – j08691

+0

Если вы используете jQuery, я придерживаюсь использования селекторов с помощью '$ ('. Something')' вместо raw js –

+0

@ j08691 Я не делал этого раньше, поэтому я нашел скрипт, который был близок к тому, что я искал и вносил изменения. Я знаю javascript, и поэтому я решил, что могу просто объединить два. Если есть лучший способ, обязательно сообщите мне! – Jon

ответ

1

Добавить тестовую функцию

function test_accordion() { 
    var elems = $('.accordionContent'); 
    if (elems.filter(':visible').length == 0) // all hidden 
     $("#displayMajors").html("Show All"); 
    else if (elems.filter(':hidden').length == 0) // all visible 
     $("#displayMajors").html("Hide All"); 
} 

Всякий раз, когда вы скользите элемент вверх (или вниз), добавить функцию контроля как функции обратного вызова. Он будет выполнен, когда анимация закончена полностью:

$(some_element).slideUp(test_accordion); 
$(some_element).slideDown(test_accordion); 
+0

Это взяло некоторый финал, но я думаю, что получил его. – Jon

+0

Получил! Спасибо, ори! – Jon

+0

Добро пожаловать. – ori

Смежные вопросы