-2

ユーザーがコメントを投稿できるコメントシステムがあります。このコメントの投稿は ajax 呼び出しです。

$(function() {
    $(".submit-comment").click(function() {

        var text = $(".txtinput").val();
        var itemid = "<?=$id?>";
        var userid = "<?=$_SESSION['user_id']?>";
        var dataString = 'text=' + text + '&userid=' + userid + '&itemid=' + itemid;

        if (text == '') {
            $('#content_error1').fadeIn(250);
            $('#content_error1').delay(1500).fadeOut(500);
        } else {    
            $.ajax({
                type: "POST",
                url: "/ajax/comments.php",
                data: dataString,
                success: function(html) {
                    $('#messages').prepend($(html).hide().fadeIn(1000));
                    $('.txtinput').val('');    
                }
            });
        }
        return false;
    });
});​

このhtml出力を与える:

<div class="com_loaded" id="id<?=$comment_id?>">
   <div id="com_loaded_height"></div>
   <div id="com_loaded_userpic"><a onClick="parent.$.fn.colorbox.close();" target="_parent" href="profile.php?id=<?=$row['user_id']?>"
      class="tooltip"><img src="<?=$row['user_pic']?>" class="img_poster" /><span><?=$row['user_name']?></span></a>
   </div>
   <div id="com_loaded_content">
      <div id="com_loaded_poster"><a onClick="parent.$.fn.colorbox.close();" target="_parent" href="profile.php?id=<?=$row['user_id']?>"><?=$row['user_name']?></a>
      </div>
      <div id="com_loaded_text">
         <?=$row[ 'comment_text']?>
      </div>
   </div>
   <div id="com_loaded_divide"></div>
   <div class="del_com"><span class="imgswap_del" att="<?=$comment_id?>"><img src="img/popup/close-small.png" alt="Delete comment"></span>
   </div>
</div>

これで、この ajax 呼び出しを使用してコメントを削除できます。

$(function() {
    $(".imgswap_del").click(function() {

        var comment_id = $(this).attr('att');
        var dataString = 'comment_id=' + comment_id;

        $.ajax({
            type: "POST",
            url: "/ajax/delete_comment.php",
            data: dataString,
        }).done(function(result) {
            myresult7(result);
        });

        return false;
    });
});​

投稿後にコメントを直接削除するオプションをユーザーに提供したいと考えています。これは機能していません。しかし、奇妙な部分は、ページを更新すると関数が機能していることです。ajax呼び出しでコメントを投稿した直後にこれを機能させるにはどうすればよいですか? 最初にページを更新したくない!

4

1 に答える 1

4

イベント委譲を使用して削除クリックイベントをバインドするか、新しいコメントごとに再バインドする必要があります。イベント委任をお勧めします。

$(document).on("click",".imgswap_del",function() {...

上記は機能しますが、次のようなより近い要素を使用することをお勧めします

$("#messages").on("click",".imgswap_del",function() {...
于 2012-11-12T19:58:49.330 に答える