0

一連のコメントに対して追加と削除という 2 つの関数を実装する必要があります。1 つの場合を除いて、挿入と削除は適切に機能しています。新しく追加されたコメントを (ページを更新する前に) 削除しようとすると、削除されません。しかし、ページを更新すると、そのコメントはすぐに削除されます。

ここにいくつかのコードがあります。次の ajax は、コメント div を追加および削除しています。

<script type="text/javascript">
$(function() {
$(".commentbutton").click(function() 
{
var element = $(this);
    var postid = element.attr("id");
    var commenttext = $("#commenttext"+postid).val();
    var dataString = 'commenttext='+ commenttext+'&postid='+postid;
    var postseq='#post'+postid;

    if(commenttext=='')
    {
    alert("Please enter your comment");
    }
    else
    {
    //$("#flash").show();
    //$("#flash").fadeIn(400).html('<img src="ajax.gif" align="absmiddle">&nbsp;<span class="loading">Loading Update...</span>');
        $.ajax({
                type: "POST",
                url: "insdelcomment.php",
                data: dataString,
                dataType:'html',
                cache: false,
                success: function(html){

                     $(postseq).append(html);
                        $(postseq).slideDown();
                    document.getElementById('commenttext'+postid).value='';
          }
         });
    }
    return false;
});
$('.delcombutton').click(function() 
        {
        var commid = $(this).attr("id");
         var dataString = 'delcomm=1&commid='+commid;
         var delcomment = '#comment'+commid;
        if(confirm("Sure you want to delete this update? There is NO undo!"))
        {

        $.ajax({
        type: "POST",
         url: "insdelcomment.php",
          data: dataString,
         cache: false,
         success: function(html){
         $(delcomment).slideUp('slow', function() {$(this).remove();});
         }
        });

        }

        return false;
        });

});
</script>

私のdivの構造

            echo "<div id='post{$postseq}'>";
            while($commentonpost=mysql_fetch_array($resultcomm)){
                if($commentonpost['visible']==1){
                    echo '
                    <div style="width:90%;float:left;margin-left:5%;margin-right:15%;margin-top:10px;" id="comment'.$commentonpost['commentid'].'">

                    <div style="width:10%;float:left;"><a href="profile.php?user='.$commentonpost['usernick'].'"  >'.$commentonpost['fname']." ".$commentonpost['lname'].'</a></div>
                    <div style="width:78%;float:left;margin-left:2%;">'.$commentonpost['comment'].'</div>
                    <div style="width:8%;float:right;margin-left:2%;">
                    ';
                    if($commentonpost['usernick']==$_SESSION['user_nick']){
                        echo '  <form action="" method="post">
                                <input type="submit"  name="delcomm" value="X" class="delcombutton" id="'.$commentonpost['commentid'].'">

                                </form>
                            ';
                    }
                    echo '<h5 class="msg">'.datetime($commentonpost['date']).'</h5>
                    </div>
                    <br/>
                    </div>

                    ';
                }
            }
            echo "</div>";





            echo '
            <form name = "form'.$postseq.'" method = "post" action=""  onsubmit="return validateform()" style="width:100%">
            <div style="width:90%;float:left;margin-left:5%;margin-right:15%;margin-top:10px;">

            <div style="width:10%;float:left;"><a href="profile.php?user='.$_SESSION['user_nick'].'"  >'.$_SESSION['user_fname']." ".$_SESSION['user_lname'].'</a></div>
            <div style="width:78%;float:left;margin-left:2%;"><textarea placeholder="Comment..." name="commenttext" id="commenttext'.$postseq.'" class="inputcomment" ></textarea></div>

            <br>
            <input type="submit" id="'.$postseq.'" name="SubmitComment" value="Comment " class="commentbutton" style="font-size:1em;width:100px;float:right;margin-top:4px;margin-right:9%;">
            </div>
            </form>
            </div>
            ';

PS: そのような未加工のコードで申し訳ありません。現在、インターネットは非常に限られています。

4

2 に答える 2

2

動的に追加された要素には委任を使用する必要があります。

$(document).on('click','.delcombutton',function(){...});
于 2013-05-06T11:08:22.877 に答える
1

動的に追加された要素に対して.on()でイベント委任モデルを使用する

$(function() {
    $(document).on('click', '.commentbutton', function() {
        var element = $(this);
        var postid = element.attr("id");
        var commenttext = $("#commenttext"+postid).val();
        var dataString = 'commenttext='+ commenttext+'&postid='+postid;
        var postseq='#post'+postid;

        if(commenttext=='') {
            alert("Please enter your comment");
        }
        else {
            //$("#flash").show();
            //$("#flash").fadeIn(400).html('<img src="ajax.gif" align="absmiddle">&nbsp;<span class="loading">Loading Update...</span>');
            $.ajax({
                type: "POST",
                url: "insdelcomment.php",
                data: dataString,
                dataType:'html',
                cache: false,
                success: function(html){

                    $(postseq).append(html);
                    $(postseq).slideDown();
                    document.getElementById('commenttext'+postid).value='';
                }
            });
        }
        return false;
    });

    $(document).on('click', '.delcombutton', function() {
        var commid = $(this).attr("id");
        var dataString = 'delcomm=1&commid='+commid;
        var delcomment = '#comment'+commid;
        if(confirm("Sure you want to delete this update? There is NO undo!"))
        {

            $.ajax({
                type: "POST",
                url: "insdelcomment.php",
                data: dataString,
                cache: false,
                success: function(html){
                    $(delcomment).slideUp('slow', function() {$(this).remove();});
                }
            });

        }

        return false;
    });

});
于 2013-05-06T11:08:27.647 に答える