JQuery在ajax调用之后添加了不需要的div

时间:2013-08-23 14:53:22

标签: php javascript jquery ajax html

我有一个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>

我希望有人能给我一个想法或提示!

2 个答案:

答案 0 :(得分:0)

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

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

$("<div />").load(location.href+' #CommentList', function (div) {
    $('#CommentList').replaceWith($(div));
})

答案 1 :(得分:0)

尝试在加载div后添加此内容!

 $("#CommentList").find('div').unwrap(); or
 $("#CommentList").find('#CommentList').unwrap();//I am doubtful about this