Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Логика работы addClass (https://javascript.ru/forum/jquery/58746-logika-raboty-addclass.html)

oleg_ 08.10.2015 14:13

Логика работы addClass
 
Вложений: 2
Дано:
три блока и три кнопки

Задача:

Сделать так, чтобы при нажатии на каждую из кнопок, отображался блок, ей соответствующий

Проблема в том, что таких блоков, как div1 может быть много, и они должны быть независимы

Дублировать скрипт, меняя айдишники для каждого div неразумно, таких может быть штук 150

Решил задать путь к кнопкам и блокам в скрипте через класс-триггер
То, есть если наш блок находится под классом active, то скрипт сможет оперировать классами под ним
Соответственно, если класс non-active - ничего не происходит

При клике по блоку div1 я меняю его класс с non-active на active, и по идее скрипт теперь должен работать, но этого почему-то не происходит, хотя класс благополучно меняется

Меня это ставит в тупик
Подскажите, пожалуйста, что я делаю не так?

рони 08.10.2015 14:30

oleg_,
форум поиск по слову открывашка выбрать из 200 вариантов по вкусу

oleg_ 08.10.2015 14:49

Вопрос же вообще не в этом
Простые переключалки я сделать могу, я хочу узнать, почему мой способ не работает

рони 08.10.2015 14:59

oleg_,
для начала не грузите два раза jquery и попробуйте сделать макет прямо в сообщении, а не вложения.
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 08.10.2015 15:05

Цитата:

Сообщение от oleg_
То, есть если наш блок находится под классом active, то скрипт сможет оперировать классами под ним
Соответственно, если класс non-active - ничего не происходит

клик в таком случае надо ставить на body (учить делегирование)
$("body").on("click", ".active .button1", function...)

а вы ставите клик на то что ещё не существует.

oleg_ 08.10.2015 15:34

Помогло, спасибо большое!
Не совсем понимаю, почему так, но разберусь

Еще такой вопрос:
Как по клику найти все классы active и заменить их на non-active?

рони 08.10.2015 15:42

oleg_,
$("селектор").on("click",function() {
  $(".active").removeClass("active").addClass("non-active")
})

oleg_ 08.10.2015 15:44

Только что буквально разобрался)
Спасибо


Часовой пояс GMT +3, время: 09:35.