0

Ajax から受け取ったデータを追加します。これには、クラス bsubmit の分割も含まれます。ページが読み込まれると、クラス bsubit を含む div をクリックすると、以下の関数が実行されますが、クラス bsubmit も含む新しく追加されたデータをクリックすると、以下のコードが機能しません。

ここにコードがあります

     $(function() {
    $(".bsubmit").click(function() {
    var id = $(this).parent().parent().attr("id");
    var comm= document.getElementById(id).getElementsByClassName("commentadd")[0].value;


      $.ajax({
       type: "POST",
       url: "comment.php",
       data: {id:id, comm:comm},
       cache: false,
       success: function(data){
        $('.addcomment').slideUp('slow', function() {

        });

// Bottom Line not working

        $("#"+id).find(".item_comment").append(data);   // DATA Contains a div with class bsubmit
         $(data).appendTo("#"+id).find(".item_comment"); // Now these Appended Div isnt calling this function again,  Why ? I want to call them again
        $('#load').fadeOut();
      }

     });


    return false;
        });


    });
4

3 に答える 3

3

私があなたの質問を理解した場合:あなたはその.on()方法を試しましたか?(jQuery1.7)

$(yourParentElement).on('click','.bsubmit',function() {
于 2012-05-13T00:15:34.560 に答える
2

あなたの問題は、クリックイベントをクラスにバインドしていることですが、そのクリックイベントは、新しく作成されたものではなく、ドキュメント内の既存のもの.bsubmitに対してのみ攻撃されます。.bsubmit

したがって、 Jquery のバージョンに応じてlive()またはon() を使用する必要があります。

この行を変更します。

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

Jクエリライブ

$(".bsubmit").live("click", function() {

また

Jquery オン

$(".bsubmit").on("click", function() {
于 2012-05-13T00:37:22.293 に答える
1

appendTo親を返しません。

$("#"+id).find(".item_comment").append(data);   
$(data).appendTo("#"+id).parent().find(".item_comment"); // Use "parent()"
$('#load').fadeOut();

しかし、実際にはいくつかの DOM 要素をキャッシュする必要があります...

var id = $(this).parent().parent().attr("id");

への変更:

var $parent = $(this).parent().parent();

その後:

$("#"+id).find(".item_comment").append(data);

への変更:

$parent.find(".item_comment").append(data);
于 2012-05-13T00:15:39.910 に答える