在jQuery的最后一个元素之前追加元素不结束

时间:2013-07-14 17:51:16

标签: javascript jquery ajax post append

我正试图用AJAX帖子发表评论。但是最后comment元素包含提交按钮。添加完成后,会在提交按钮后显示新项目。

<div class="commentContainer" >

    <div class="comment">
        <div class="commentText">Any comment1 ... </div>
    </div>

    <div class="comment">
        <div class="commentText">Any comment2 ... </div>
    </div>
        ....................................
    <div class="comment"> 
        <div class="sendPanel">
            <input type="submit" value="Post" />
        </div>
    </div>

</div>

和发布请求的结果:

success: function (result)  {
    if (result.success) {
         $('.commentContainer').append('<div class="comment"><div class="commentText">' + result.text + '</div></div>');
    }   
} 

我想始终保持提交按钮。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

试试这个

  $('<div class="comment"><div class="commentText">' + result.text + '</div></div>')
   .insertBefore('commentContainer .comment:last-child'); 

甚至更好

$('<div>', {'class': 'comment'}).append(
    $('<div>', {'class': 'commentText', text: result.text})
).insertBefore('.commentContainer .comment:last-child');

这个性能更好

  

Demo

jQuery last-child

jQuery insertBefore

答案 1 :(得分:2)

您可以使用:last伪选择器:
试试这个:

success: function (result) 
    {
        if (result.success) 
        {
            $('.commentContainer').find('div:last').before('<div class="comment"><div class="commentText">' + result.text + '</div></div>');
        }   
    }

答案 2 :(得分:1)

试试这个:

 success: function (result) 
    {
        if (result.success) 
        {
             $('<div class="comment"><div class="commentText">' + result.text + '</div></div>').insertBefore('.commentContainer .comment:last');
        }   
    }