Вы можете сделать это следующим образом:
$(".more").click(function() {
var id = $(this).closest("article").find("img:first").attr("id");
});
Это ищет родительское дерево для содержащего тега <article>
.Затем он находит первый тег <img>
и получает его значение id.
Вы не можете использовать .siblings()
на $(this)
, потому что изображение не является прямым братом $(this)
.Вы можете использовать .siblings()
, если у вас есть правильный родитель, у которого img был братом, но это немного более хрупко, чем я предлагал.Например, это также будет работать, но оно зависит от более точного позиционирования объектов HTML, и любые незначительные изменения могут нарушить этот код:
$(".more").click(function() {
var id = $(this).parent().prev().attr("id");
});
или
$(".more").click(function() {
var id = $(this).parent().siblings("img").attr("id");
});
Вы можете '* Не используйте .closest()
для тега <img>
напрямую, поскольку img не является родителем объекта .more
.
Если бы это был мой код, я бы сделал это так, потому что это наиболеегибкий и наименее вероятный разрыв, если HTML-файл отредактирован незначительно, и вы обязательно получите правильный объект img, даже если поблизости есть несколько изображений:
<article>
<img class="target" src="..." id="TR"/>
<div>some text <a>link</a> <span class="more">read more</span></div>
</article>
$(".more").click(function() {
var id = $(this).closest("article").find(".target").attr("id");
});