Dimensi
@Dimensi
Совсем недавно начал познавать верстку.

Почему не работает if с jquery?

if (!$(".news__image-block").hasClass('open')) {
		$('.news__image').hover(function() {
			$(this).children('.news__image-block').toggleClass('half-open');
			$(this).parents('.news__item').children('.news__text').children('.news__text-bottom').children('.news__text-next').toggleClass('invert');
		});
	}

Такая конструкция у меня не работает, почему? Я хочу, чтоб скрипт внутри кода не работал, если у элемента есть класс open, а он все равно работает. И почему не работает .children(".news__text > .news__text-bottom") ? Заранее спасибо.
Update
Всем спасибо, смог исправить положение при помощи :not и двойном toggleClass.
  • Вопрос задан
  • 636 просмотров
Решения вопроса 1
Dimensi
@Dimensi Автор вопроса
Совсем недавно начал познавать верстку.
Проблема была в том, что hover работал, когда не должен был работать. С помощь :not(.open) я смог заставить hover не работать при классе open.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
trevoga_su
@trevoga_su
jquery.page2page.ru/index.php5/%D0%9D%D0%B0%D0%BB%...

Проверяет наличие класса className у выбранных элементов страницы. Если хотя бы один из элементов содержит этот класс, то функция вернет true, иначе вернет false.
Ответ написан
EreminD
@EreminD
Кое-что умею
Я в этом плане, конечно, не электрик, но что, если навесить еще скобок вот так:
if (!($(".news__image-block").hasClass('open'))) {
    $('.news__image').hover(function() {
      $(this).children('.news__image-block').toggleClass('half-open');
      $(this).parents('.news__item').children('.news__text').children('.news__text-bottom').children('.news__text-next').toggleClass('invert');
    });
  }


Вторая идея - вот так:
$('.news__image').hover(function() {
  if (!($(".news__image-block").hasClass('open'))) {
     $(this).children('.news__image-block').toggleClass('half-open');
     $(this).parents('.news__item').children('.news__text').children('.news__text-bottom').children('.news__text-next').toggleClass('invert');
  }
});

Ну т.е. закинуть if внутрь обработчика
Ответ написан
@glitch536
javascript разработчик
$(".news__image-block") возвращает массив элементов, поэтому результат операции будет всегда true -
нужно пройтись по результатам массива
с $(this).children, похоже, такая же история
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы