0

我有一个 jquery ajax 调用,我在其中向数据库添加新评论。它保存得很好,但是当我想重新加载显示评论的 div 时,我总是得到一个我不想要的额外 div。当我重新加载页面时,一切都很好并按需要显示!

剧本:

<script>
        $("#addcmt").click(function() {
            var UserID = $("#UserID").val();
            var ClassID = $("#ClassID").val();
            var text = $("#appendedInputButton").val();
            var option;
            if($("#option").is(':checked')) {
                option = 3;
            } else {

                option = 1;
            }
            $.ajax({
                type: "GET",
                url: "/comment/functions/add_class_comment.php",
                data: "text=" + text + "&UserID=" + UserID + "&ClassID=" + ClassID + "&option=" + option,
                success: function(msg) {
                    $("#CommentList").load(location.href+' #CommentList');
                    $('#appendedInputButton').val("");
                    $('.criticalcomment').attr('checked', false);
                }
            });
        });
    </script>

显示他们评论的 php+html:

<div class="bs-docs-example" id="message">
    <div id="CommentList">
        <?php
            for ($i=0; $i<$l; $i++) {
                switch($commentarr[$i]->getOption()) {
                    case 1:
                        $option="alert-success";
                        break;
                    case 2:
                        $option="alert-info";
                        break;
                    case 3:
                        $option="alert-error";
                }
                echo '<div class="Comments alert '.$option.'"><div class="CommentsName">'.$userarr[$i]->getFirstname().' '.$userarr[$i]->getLastname().'</div>';
                echo '<div class="CommentsDate">'.renderDate($commentarr[$i]->getDate()).'</div><div class="CommentsText">'.$commentarr[$i]->getText().'</div>';
                if ($deletebutton == 1) {
                    echo '<div class="deleteButtonAdmin"><input type="button" class="btn btn-small btn-primary delcmt" value="L&ouml;schen" name="'.$commentarr[$i]->getID().'"></div>';
                }
                echo '</div>';
            }
        ?>
    </div>
    <form class="Comments postmessage">
        <div class="input-append" style="margin-top: 10px;">
            <input type="hidden" name="ClassID" id="ClassID" value="<?php echo $c->getID(); ?>">
            <input type="hidden" name="UserID" id="UserID" value="<?php echo $u->getID(); ?>">
            <textarea class="span12" name="text" id="appendedInputButton" type="text"></textarea>
            <label for="option">Kritisch?</label><input type="checkbox" id="option" class="criticalcomment" name="option" value="1">
            <input type="button" class="btn" id="addcmt" value="Post">
        </div>
    </form>
</div>

我希望有人对我有想法或提示!

4

2 回答 2

0

好吧,$("#CommentList").load(location.href+' #CommentList');告诉 jQuery 替换with的内容,所以你得到两个嵌套的 s,对吗?#CommentList#CommentList#CommentList

你可能不得不做$("#CommentList").remove().load(location.href+' #CommentList')。如果这不起作用,请尝试引入一个临时 div:

$("<div />").load(location.href+' #CommentList', function (div) {
    $('#CommentList').replaceWith($(div));
})
于 2013-08-23T14:57:45.567 回答
0

加载 div 后尝试添加它!

 $("#CommentList").find('div').unwrap(); or
 $("#CommentList").find('#CommentList').unwrap();//I am doubtful about this
于 2013-08-23T15:34:41.333 回答