0

私はこれを頭の部分に持っています。

<script type="text/javascript" src="post.js"></script>

このpost.jsを新しく作成した要素にも実装したい.main.jsという名前の別のjsファイルには、別のphpファイルからデータを取得し、それをid display.Previous Loadedのdivに追加するコードがありますDiv は post.js ファイルでうまく機能しますが、新しい要素が先頭に追加されるため、新しい要素では機能しません。これは、phpファイルからデータを取得して先頭に追加するmain.jsコードです。

var auto_refresh8 = setInterval(function() {
    var id = "id="+$(".ally:first").attr("id");
    $.ajax({
        type: "POST",
        url: "get_post.php",
        data: id,
        cache: false,
        success:function(html){
            $('#display').prepend(html);
        }
    });
},2000);

この jquery ajax リクエストは、get_post.php ファイルからデータを取得し、それを div 表示の先頭に追加します。しかし、post.js のコードはこれでは機能しません。jquery ajax リクエストによって返されるデータには、keypress 関数が動作するときに送信する必要があるクラス comm の div が含まれています。

以下は post.js のコードです:

$(document).ready( function() {
    $(".comm").keypress(function(e) {
        if(e.which == 13) {
            var id = $(this).attr("id");
            var data = 'id=' + id;
            var post = $(this).val();
            var data1 = 'comment='+post;
            var wholedata = data+'&'+data1;

            $(this).blur();
            $.ajax({
                type: "POST",
                url: "c_insert.php",
                data: wholedata,
                cache: false,
                success:function(html){
                    $('.class_all'+id).append(html);
                }
            });
            return false;
        }
    });
});
4

1 に答える 1

0

代わりにデリゲートを使用して、post.js ファイルでイベントを処理してください。詳細については、jQuery のドキュメントを参照してください。

このような何かがそれを行う必要があります:

$('#display').on('keypress', '.comm', function (e) {
  if(e.which == 13) {
    // Do code on event
  }
});

「on」関数は、jQuery バージョン 1.7 以降を使用している場合にのみ使用する必要があることに注意してください。以前のバージョンでは、関数「デリゲート」を使用しています。

edit $(document).on(...) を $('#display').on(...) に変更しました。これは、すべての '.comm' 要素が '#display' の子であるためです。

于 2012-10-18T12:11:59.173 に答える