jquery - 在 jQuery 中选择 sibling 的 sibling

标签 jquery jquery-selectors siblings

在下面的代码中,当用户单击 '.more' span 元素时,我想从其中的 img 检索信息(例如,ID)使用 jQuery 的 article 标签。

这是 HTML:

<article>
<img src="..." id="TR"/>
<div>some text <a>link</a> <span class="more">read more</span></div>
</article>

我已经尝试过这段代码:

   $('.more').click(function () {

        var id = $(this).siblings().siblings('img').attr('id');

});

但似乎不起作用。有什么想法吗?

非常感谢!

最佳答案

你可以这样做:

$(".more").click(function() {
    var id = $(this).closest("article").find("img:first").attr("id");
});

这将查找包含 <article> 的父树。标签。然后,它找到第一个 <img>标记并获取其 id 值。

您不能使用.siblings()$(this)因为该图像不是 $(this) 的直接同级图像。您可以使用.siblings()如果你有正确的 parent ,img是 sibling ,但这比我提议的要脆弱一些。例如,这也可以,但它依赖于 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 对象,即使有更多的 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");
});

关于jquery - 在 jQuery 中选择 sibling 的 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883335/

相关文章:

javascript - 在哪里可以找到有关原始 JSON 操作的 JS JSON 信息?

javascript - 为什么我的代码在 Chrome/Safari 中完全兼容,在 FireFox 中有些兼容,但在 Internet Explorer 8 中却几乎不兼容?

jquery - KnockOutJs 对象未发布

javascript - jQuery 类选择器不适用于数据表中 JSON 生成的元素

JQuery 从存储在变量中的对象中删除和添加类

javascript - 没有 Javascript 的人的后备会在 jQuery 加载之前闪现

javascript - 如何使用 jQuery 从发送到服务器的元素列表中省略 "Select All"复选框?

Jquery:如何让 sibling 的CSS属性设置为不显示

java - 在节点中查找关键字并获取 DOM 中的节点名称

javascript - 如何使用 jQuery 删除此弹出窗口中的下两个同级且仅删除下两个同级?