jQuery: Как добраться до конкретного ребенка родителя?

Для предоставления упрощенного примера мне повторили следующий блок на странице много времен (это динамично сгенерировано):

<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.

Кто-либо?Спасибо.

91
задан Keavon 19 May 2014 в 17:01
поделиться

3 ответа

Вызов .parents(".box .something1") вернет все родительские элементы, которые соответствуют селектору .box .something. Другими словами, он вернет родительские элементы, которые являются .something1 и находятся внутри .box.

Вам нужно получить дочерние элементы ближайшего родителя, например, так:

$(this).closest('.box').children('.something1')

Этот код вызывает .closest для получения самого внутреннего родителя, соответствующего селектору, затем вызывает .children на этом родительском элементе, чтобы найти дядю, которого вы ищете.

137
ответ дан 24 November 2019 в 06:46
поделиться
$(this).parent()

Обход деревьев - это весело

$(this).parent().siblings(".something1");

$(this).parent().prev(); // if you always want the parent's previous sibling

$(this).parents(".box").children(".something1");

И многие другие способы могут быть вам полезны в этих документах.

17
ответ дан 24 November 2019 в 06:46
поделиться

Если я правильно понял вашу проблему, $ (this) .parents ('. Box' ) .children ('. something1') Это то, что вы ищете?

6
ответ дан 24 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

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