#jquery #jquery-selectors
#jquery #jquery-селекторы
Вопрос:
Я пытаюсь изменить css .target
, который является sibling родительского элемента .hover
. Кажется, не могу заставить этот код работать — я не уверен, нужен ли мне $ (this) в начале моей функции или $ (‘.target’)… Я думаю, что это может быть .target, потому что это то, с помощью чего я меняю css .css()
.
<script type="text/javascript">
$(document).ready(function() {
$('.hover').hover(
function(){
$(this).parent().siblings('.target').css('display', 'inline');
},
function(){
$(this).parent().siblings('.target').css('display', 'none');
}
);
});
</script>
И вот моя догадка (которая также не работает):
$('.target').parent(this).sibling().css('display', 'inline');
И вот html
<div class="target" style="display: none;">
</div>
<div>
<span class="hover">Hover</span>
</div>
Редактировать——————
Кажется, что это не работает, когда span
есть class="hover"
.
ОТРЕДАКТИРУЙТЕ numero dos ——————— Кажется, мои <span>
два родителя были глубоко погружены и нуждались .parent().parent()
в благодарностях.
Комментарии:
1. Вы вызываете
.sibling()
(который не существует) или.siblings()
(который существует)?2. смотрите опубликованные ссылки на jsfiddle, class=»hover» отлично работает на промежутке 🙂
Ответ №1:
Предполагая, что ваш html соответствует вашим ожиданиям, и, не видя его, я не могу комментировать улучшения, это должно сработать:
$('.target').parent().siblings('.target').css('display', 'inline');
Или, если .target
элемент является следующим родственным элементом:
$('.target').parent().next('.target').css('display', 'inline');
Или, если предыдущий sibling (и из html, который вы опубликовали, он является предыдущим sibling):
$('.target').parent().prev('.target').css('display', 'inline');
Ссылки:
.siblings()
..parent()
..sibling()
..prev()
..next()
.
Ответ №2:
Энди, посмотри на эту скрипку, похоже, у тебя правильный код в первом примере, который ты опубликовал. Если бы вы могли опубликовать свой HTML-код, мы могли бы лучше провести время, помогая. http://jsfiddle.net/nKtzB/3/
Ответ №3:
Попробуйте использовать display:block
вместо этого, если вы пытаетесь что-то сделать с блоком.
Ваш код по-прежнему в порядке, смотрите:http://jsfiddle.net/Mx4ks/1 /
Должно быть, что-то еще не так.. Попробуйте вставить свой HTML тоже 🙂
Посмотрите на свой собственный код в действии здесь: http://jsfiddle.net/Mx4ks /