Задать вопрос
@NikoEro
Pre-Junior верстальщик

Как изменить CSS дочернего элемента блока при наведении посредством jQuery?

С места в карьер:
Имеется 6 подобных блоков, сгруппированных флексбоксом:
<div class="info_block"> <img src="svg/brightness.svg" alt="" class="icon">
		  <h3 class="description_block">Редактирование</h3>
		  <p class="description_text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laboriosam, dicta alias fuga. Aperiam aliquid debitis consequatur, consequuntur eius, iure ducimus assumenda enim molestias quis doloribus ipsum provident minus incidunt! Quia!</p>
		</div>

Требуется, чтобы при наведении на один из блоков, менялся цвет бордюра, svg и h3. Бордюр через CSS настроил, svg не принципиально сейчас, тут я вставил его кажись не так как надо и доступа к нему нет для изменения параметра fill, главное для меня - чтобы при наведение менялся цвет h3.
Использовал этот код jQ:
$( "div.info_block" ).hover(
		  function() {
			$( "div.info_block h3" ).css( "color", "#1dde85" );
		  },
			function() {
			$( "div.info_block h3" ).css( "color", "" );
		  }
		);

НО! В данном случае при наведении на один блок, h3 меняется у всех дивов, что не есть гуд. Если же после .css( $( "color", "#1dde85") ) - то не происходит ровным счетом ничего. Что не так делаю? Сразу скажу, только учусь, поэтому не понимаю сложных jQ и JS, палками не бить, правда, есть ощущение что просто в глаза долблюсь и не вижу очевидного.
Пока вот такое непотребство вышло:
c502768f8c25458cbcef2fafdb251910.png
При наведении на блок:
683945f5aae541759680afe0f838896b.png

UPD: поясню, да, можно реализовать через CSS, но тогда выходит следующее:
.info_block:active, .info_block:hover, .info_block:focus {
	border: 2px #1dde85 solid;
	color: black;
	transition: 200ms;
	transition-timing-function: ease-in-out;
	-webkit-transition: 200ms;
	-webkit-transition-timing-function: ease-in-out;
}

.info_block:active h3, .info_block:hover h3, .info_block:focus h3 {
	color: #1dde85;
	transition: 200ms;
	transition-timing-function: ease-in-out;
	-webkit-transition: 200ms;
	-webkit-transition-timing-function: ease-in-out;
}

Весьма громоздкая конструкция, учитывая что это лишь небольшая часть таблицы стилей. Хотелось бы все таки найти решение, где я ошибся в jQuery

UPD ver.2: Друзья, если Вам говорят, что надо копать экскаватором, то это не значит, что Вас просят показать как это делать лопатой. Нужен ответ конкретно по JS и ошибке.
  • Вопрос задан
  • 2513 просмотров
Подписаться 2 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 2
kentovsky
@kentovsky
php, js, mysql разработчик
А зачем тут JS можно на CSS
.div.info_block > h3:hover{
  color:red;
}
Ответ написан
Так а в чём сложность то? Обработчик на ховер по родительскому диву, внутри идите по детям от $(this), что бы не всплывало на всех элементах и меняйте им то, что нужно. transition в css задайте, где необходимо, либо используйте .animate();

Черновой вариант
$( "div.info_block" ).hover(function(){
    $(this).css("border", "value");
    $(this).children("h3").css({
         "color": "value",
          ...
    });
   $(this).children("img").css({
         "color": "value",
          ...
    });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы