获取特定标签

时间:2016-04-03 10:28:13

标签: jquery html

点击第3个“i”标签时,我正在尝试获取之前的“img”标签:

<div>
    <img src="img/image1.jpg" alt="image2"/>
    <div id="image_options">
        <i class="material-icons md-36">account_box</i>
        <label>djbaptou</label>
        <div id="left_icons">
            <i class="material-icons md-36 fav">favorite_border</i>
            <i class="material-icons md-36 purple">question_answer</i>
            <i class="material-icons md-36 full_screen">settings_overscan</i>
        </div>
    </div>
</div>

这是我的jQuery代码:

$(".full_screen").click(function(){
    var img = $(this).parent().parent().closest("img");
    modal.css("display", "block");
    modalImg.attr("src", img.attr("src"));
});

但是当我做“警报(img);”它说这是未定义的

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

closest无法正常工作,因为i元素不是img元素的后代(根据定义; {{ 1}}元素不能包含子元素。

您可以在特定情况下使用img,但它很脆弱;当你随着时间的推移修改东西时,对标记的一点点改变都会搞砸了。我要做的是在整体parent().parent().prev()中添加一个类,然后使用div

当然,由于带有closest(".the-class").find("img")元素的div有i,只有id

以下是类选项的示例,其中点击第三个$("#image_options").prev()元素会将图像从用户图标更改为我的图像:

&#13;
&#13;
i
&#13;
$("i.purple").click(function() {
  $(this).closest(".the-class").find("img").attr("src", "https://www.gravatar.com/avatar/ca3e484c121268e4c8302616b2395eb9?s=32&d=identicon&r=PG");
});
&#13;
&#13;
&#13;