1

我试图找到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. 当用户按下输入按钮时。

注意:我用 jQuery 添加这些 div

请任何人帮我解决这个问题...谢谢...

4

1 回答 1

2

.prev()只会匹配一个元素,并且如果您提供了一个选择器,则只有它匹配该选择器。

鉴于您需要的现有 HTML 片段:

$('#findbefore').prev().find('.SharedImage');

但是我担心页面上是否可能有多个这样的元素?如果您提供更多 HTML,您可能会得到更完整的答案。

例如,您可能会更好:

$(this).closest('.SPcommentbox').prev().find('.SharedImage');

或者,如果页面上只有一个保证.sharedImage,那么你应该给它一个 ID 而不是一个类,并直接访问它:

$('#SharedImage')
于 2013-03-05T18:27:47.887 回答