Для предоставления упрощенного примера мне повторили следующий блок на странице много времен (это динамично сгенерировано):
<div class="box">
<div class="something1"></div>
<div class="something2">
<a class="mylink">My link</a>
</div>
</div>
При нажатии я могу добраться до родителя ссылки с:
$(".mylink").click(function() {
$(this).parents(".box").fadeOut("fast");
});
Однако... Я должен добраться до <div class="something1">
из того конкретного родителя.
В основном кто-то может сказать мне, как обратиться к высокоуровневому одноуровневому элементу не имея возможности для обращения к нему непосредственно? Давайте назовем это старшим братом. Прямая ссылка к имени класса старшего брата заставила бы каждый экземпляр того элемента на странице постепенно исчезать - который не является желаемым эффектом.
Я попробовал:
parents(".box .something1") ... no luck.
parents(".box > .something1") ... no luck.
siblings() ... no luck.
Кто-либо?Спасибо.
Вызов .parents(".box .something1")
вернет все родительские элементы, которые соответствуют селектору .box .something
. Другими словами, он вернет родительские элементы, которые являются .something1
и находятся внутри .box
.
Вам нужно получить дочерние элементы ближайшего родителя, например, так:
$(this).closest('.box').children('.something1')
Этот код вызывает .closest
для получения самого внутреннего родителя, соответствующего селектору, затем вызывает .children
на этом родительском элементе, чтобы найти дядю, которого вы ищете.
$(this).parent()
Обход деревьев - это весело
$(this).parent().siblings(".something1");
$(this).parent().prev(); // if you always want the parent's previous sibling
$(this).parents(".box").children(".something1");
И многие другие способы могут быть вам полезны в этих документах.
Если я правильно понял вашу проблему, $ (this) .parents ('. Box' ) .children ('. something1')
Это то, что вы ищете?