0

我的头部有这个。

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

我希望这个 post.js 也可以应用于新创建的元素。我的另一个名为 main.js 的js 文件有一个代码,它从另一个 php 文件中获取数据并将其添加到 div 中,id 为 display.Previous Loaded Div 适用于 post.js 文件,但由于添加了新元素,它不适用于新元素。这是我的 main.js 代码,它从 php 文件中获取数据并将其添加到前面:

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 请求返回的数据包含一个带有类 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
  }
});

请注意,只有在使用 jQuery 1.7 或更高版本时才应使用“on”函数。以前的版本使用“委托”功能。

编辑将 $(document).on(...) 更改为 $('#display').on(...),因为所有 '.comm' 元素都是 '#display' 的子元素。

于 2012-10-18T12:11:59.173 回答