Запутался с .parents
Структура такая:
<div class="cities_block"> <div class="city_block"> <div class="city_block_in"> <a href="/"></a> </div> </div> <div class="city_block"> <div class="city_block_in"> <a href="/"></a> </div> </div> <div class="city_block"> <div class="city_block_in"> <a href="/"></a> </div> </div> </div> Подскажите, почему не срабатывает: jQuery(function(){ jQuery('.city_block .city_block_in').hover(function(){ var parent=jQuery(this).parents('.cities_block').eq( 0 ); parent.find('.city_block').toggleClass('bg'); }) }); Необходимо, чтобы при наведении на city_block_in только на один вышестоящий city_block добавлялся класс, а не на все сразу. |
<div class="cities_block"> <div class="city_block"> <div class="city_block_in"> <a href="/">a</a> </div> </div> <div class="city_block"> <div class="city_block_in"> <a href="/">b</a> </div> </div> <div class="city_block"> <div class="city_block_in"> <a href="/">c</a> </div> </div> </div> <style>.bg {background: red;}</style> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> jQuery(function () { jQuery('.city_block .city_block_in').hover(function () { jQuery(this).closest('.city_block').toggleClass('bg'); }) }); </script> Вам же известно, что это задачу нужно решать с помощью css, а не js? |
Цитата:
Я пробовал через вариант: .city_block_in:hover .city_block { ... } и не работает. |
Цитата:
|
Quark_, кстати при получении фокуса не срабатывает... Селектор .city_block:has(:focus) работает уже сейчас при помощи .city_block:focus-within
.city_block:focus-within { background: red; } Цитата:
<div class="cities_block"> <div class="city_block"> <div class="city_block_in"> <a href="#">a</a> </div> </div> <div class="city_block"> <div class="city_block_in"> <a href="#">b</a> </div> </div> <div class="city_block"> <div class="city_block_in"> <a href="#">c</a> </div> </div> </div> <style> .city_block { background: gold; margin: 1em; padding: 1em; pointer-events: none; /* ! */ } .city_block_in { background: yellowgreen; padding: 1em; max-width: 50%; pointer-events: all; /* ! */ } .city_block:focus-within, .city_block:hover { background: red; /* ! */ } </style> А если размеры элементов .city_block и .city_block_in совпадают (как в примере в сообщении №2), то и никакой pointer-events не нужен! |
Часовой пояс GMT +3, время: 00:10. |