点击第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);”它说这是未定义的
有什么想法吗?
答案 0 :(得分:3)
closest
无法正常工作,因为i
元素不是img
元素的后代(根据定义; {{ 1}}元素不能包含子元素。
您可以在特定情况下使用img
,但它很脆弱;当你随着时间的推移修改东西时,对标记的一点点改变都会搞砸了。我要做的是在整体parent().parent().prev()
中添加一个类,然后使用div
。
当然,由于带有closest(".the-class").find("img")
元素的div有i
,只有id
。
以下是类选项的示例,其中点击第三个$("#image_options").prev()
元素会将图像从用户图标更改为我的图像:
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;