@nagge101

Выборка внутри блока на jQuery скрипта по добавлению класса?

Здравствуйте.
Пишу уже подобное сегодня, но уже совсем с другой проблемой.
У меня есть на сайте элементы, вот структура:
<div class="shop-ellement-sidebar">
    <span class="element-sidebar_name">Название</span>
    <div class="element-sidebar_content"></div>
</div>


По началу element-sidebar_content спрятан, но при нажатии на сам блок shop-ellement-sidebar идет анимацией появление element-sidebar_content

Код jQuery:

$('.shop-ellement-sidebar').on('click', function() {
	if($('.element-sidebar_content').hasClass('active')) {
		$(this).children('.element-sidebar_content').removeClass('active');
		$(this).children('.element-sidebar_name').removeClass('arr-active');
	}else {
		$(this).children('.element-sidebar_content').addClass('active');
		$(this).children('.element-sidebar_name').addClass('arr-active');
	}
});


arr-active - это свойство для стрелочки(:after)...
Все работает, анимация есть, но, когда я нажимаю на элемент element-sidebar_content(пункт меню или еще что-то), то блок сворачивается. Соответсвенно срабатывает функция romoveClass

Как этого избежать?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Проверяйте, где был клик:

$('.shop-ellement-sidebar').on('click', function(e) {
  if ($(e.target).closest('.element-sidebar_content').length) {
    return;
  }
  // дальше проверка наличия класса active и т.д. - без изменений

Или останавливайте всплытие события при клике на .element-sidebar_content:

$('.element-sidebar_content').click(function(e) {
  e.stopPropagation();
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
KickeRocK
@KickeRocK
FrontFinish
А как вы думаете оно должно работать? Структуру чуть поменяйте. Сделайте иконку(стрелочку) по клику на которую оно будет появляться и исчезать.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 17:47
7000 руб./за проект
21 нояб. 2024, в 17:30
1500 руб./за проект
21 нояб. 2024, в 17:22
7000 руб./за проект