Задать вопрос
RadCor
@RadCor
Если мой ответ вам помог, отмечайте его решением.

Как сделать больше одного спойлера, помoмогите подправить JS?

Есть несколько спойлеров, конкретно в примере 2.
Нужно что бы они открывались по отдельности (сейчас при клике на один, открываются все)
  • Вопрос задан
  • 209 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
Проблема в том, что селектор $('.spoiler_toggle') находит оба спойлера, а вам нужно найти только тот на который кликнули. Проще всего добавить в селектор второй параметр, который будет являться контекстом (областью поиска). В данном случае $this.parent() это блок <div></div> в который обёрнут спойлер.
Результат будет такой:
$('.spoiler_toggle',$(this).parent()).slideToggle(0, 
             function() {
             	var visible = $(this).is(':visible');
             	$('.spoiler_indicator', $(this).parent()).html(visible ? 'Закрыть' : 'Открыть');
         	}
         );
Ответ написан
vawsan
@vawsan
Frontend Developer
Вот более правильный вариант, позволяющий работать и с вложенностью в общий родительский контейнер(div). То есть можете теперь строчить их подряд, главное чтобы spoiler_toggleбыл перед "своим" spoiler_indicator.

$(document).ready(function () {
    $('.spoiler_indicator').click(function () {
        var indicator = $(this);
        var toggle = $(this).prev('.spoiler_toggle');

        if (toggle.is(':visible')) {
            toggle.hide(0);
            indicator.html('Открыть');
        } else {
            toggle.show(0);
            indicator.html('Закрыть');
        }

    });
});


https://jsfiddle.net/kf8nme8e/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽