我正在创建一系列评论,并对其下方的评论进行回复。我使用此代码将新回复附加在评论下方。

$(document).on('click', '.sub-reply1-send', function() {
    var reply = $('textarea[name=comment-reply]').val();
    $('.sub-reply1, .sub-reply1-textarea, .sub-reply1-send').slideUp(250).remove();
    $('.answer').append("<div class='comment-sub-reply' style='display:none'>" + reply + "</div>");
    $('.comment-sub-reply').slideDown(250);
    subreply_visible = false;
});


如果只有一个评论要回复,这很好用,但是如果有两个评论,比如说Comment1和Comment2,则Comment1将在Comment2下生成。回复Comment1会很好,但是回复Comment2会在Comment1中的最后一个下方生成回复框。

我有什么办法可以使它附加到单击它的注释中?

编辑:从我产生的HTML标记。

<div id="right-bar" class="flexcroll" style="display: block;">
    <div class="question" style="display: block;">
        <div class="question-content">What is the significance of this section?</div>
    </div>
    <div class="answer" style="display: block;">
        <div class="question-answer" style="" id="thread1">This is not a test
            <img class="reply" src="reply.png" />
        </div>
        <div class="question-answer" style="" id="thread0">Test
            <img class="reply" src="reply.png" />
        </div>
        <div class="comment-sub-reply" style="">Another Test</div>
        <div class="comment-sub-reply" style="">Still underneath Test</div>
        <div class="comment-sub-reply" style="">This isn't a test either, but it's appearing under test</div>
        <div class="sub-reply1" style="">
            <textarea class="sub-reply1-textarea" name="comment-reply" style=""></textarea>
            <div class="sub-reply1-send" style=""></div>
        </div>
    </div>
    <div id="comment">
        <form name="commentForm">
            <textarea type="text" name="comment" id="answer-text-input" align="top" class="flexcroll" style="display: block;"></textarea>
        </form>
        <div id="button" style="display: block;"></div>
    </div>
</div>


JQuery的其他方面不影响它,仅此一个函数创建子注释。到目前为止,唯一的线程ID不会执行任何操作,但是我正在努力使该工作与注释分开。

最佳答案

使用jQuery .after()。使用此方法,您可以在为.after()函数提供的元素之后添加一个新元素。

因此可能在执行$('。answer')。append()时,您应该在执行$(this).after()。在这里this将指向被单击的元素

09-25 15:12