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。ユーザーがEnterボタンを押したとき。

注:これらのdivをjQueryで追加しています

誰でもこれを解決するのを手伝ってください...ありがとう...

4

1 に答える 1

2

.prev()直前の要素にのみ一致し、セレクターを指定した場合は、そのセレクターに一致する場合にのみ一致します。

既存の HTML スニペットが必要な場合:

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

しかし、ページにそのような要素が複数あるのではないかと心配していますか? より多くの HTML を指定すると、より完全な回答が得られる場合があります。

たとえば、次のような方がよい場合があります。

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

または、ページに 1 つしかないことが保証さ.sharedImageれている場合は、クラスではなく ID を指定して、直接アクセスする必要があります。

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