我正在尝试在指定元素之前找到之前的img
元素。但是当我运行我的代码时,它会返回undefined
。
我的代码是:
$(document).on('keypress','#sendComment', function(e) {
if(e.keyCode==13){
var itemId=$('#findbefore').prev('.SharedImage');//
console.log(itemId);
var dataid=itemId.data('id');
var dataalid=itemId.data('alid');
var datashareid=itemId.data('shareid');
var alt=itemId.attr('alt');
alert(dataid +' '+dataalid+' '+datashareid+' '+alt);
}
});
这是在控制台中打印Object[]
,在警告中打印undefined undefined undefined undefined
。
我的div是:
<div id="S04" class="snew" style="display: block;">
<div class="author-image"></div>
<span>ajay shared the image xyz</span>
<div class="s-content">
<div class="s-message"></div>
<div class="shpicture">
<img class="SharedImage" width="100%" height="100%" data-shareid="1" data-alid="1" data-id="1" alt="xyz" src="data:image/jpeg;base64,">
</div>
</div>
</div>
<div class="SPcommentbox" id="findbefore">
<div class="comment">
<div class="commenter-image"></div>
<div class="addcomment">
<input id="sendComment" class="commentbox" type="text" placeholder="Write a comment...">
</div>
</div>
</div>
我需要找到img
的属性值。当用户按下enter按钮时。
注意:我正在使用jQuery添加这些div
请有人帮我解决这个问题......谢谢...
答案 0 :(得分:2)
.prev()
仅匹配立即前面的元素,并且如果您提供了一个选择器,则仅当它与该选择器匹配时。
鉴于您需要现有的HTML代码段:
$('#findbefore').prev().find('.SharedImage');
但是我担心页面上是否会有多个这样的元素?如果您提供更多HTML,您可能会得到更全面的答案。
例如,可能最好用:
$(this).closest('.SPcommentbox').prev().find('.SharedImage');
或者,如果页面上只保证一个.sharedImage
,那么您应该为其提供ID而不是类,并直接访问它:
$('#SharedImage')