Php js元素在新htm';它加载了ajax

Php js元素在新htm';它加载了ajax,php,ajax,jquery,Php,Ajax,Jquery,我有一个查看照片的页面,用户可以提交评论 我写了一个js文件名(ajax.js),在该页面上每隔30秒用ajax加载一条新评论 我写了另一个js文件(名为feed.js),当用户点击每个评论旁边的删除图标时,隐藏并删除 代码feed.js: $('a[cm-del]').click(function () { var cmid = $(this).attr('cm-del'); var typeid = $(this).attr('data-type'); $('li[l

我有一个查看照片的页面,用户可以提交评论
我写了一个js文件名(ajax.js),在该页面上每隔30秒用ajax加载一条新评论
我写了另一个js文件(名为feed.js),当用户点击每个评论旁边的删除图标时,隐藏并删除
代码feed.js

$('a[cm-del]').click(function () {
    var cmid = $(this).attr('cm-del');
    var typeid = $(this).attr('data-type');
    $('li[last-id=' + cmid + ']').effect('pulsate');
    $('li[last-id=' + cmid + ']').hide(300);
    $.post('/post/comment.php', {
        cmdelete: cmid,
        type: typeid
    }, function () {});
});
codes ajax.js:

function getmorecmphoto() {
    $('li[data-hiv]').hide();
    var lastid = $('li[last-id]:last').attr('last-id');
    if (lastid === '') {
        var lastid = 0;
    }
    var oldcm = $('div[comments-id]').html();
    var photoid = $('div[comments-id]').attr('comments-id');
    $.post('/post/photo.php', {
        lastid: lastid,
        photoid: photoid
    }, function (getlastcmphoto) {
        $('div[comments-id]').html(oldcm + getlastcmphoto);
    });
}
setInterval(getmorecmphoto, 25000);
当用户第一次打开此页面时,加载最后10条注释
一切都很顺利
但在使用ajax加载新注释25-30秒后 my feed.js不适用于新评论?
对此我必须做些什么?
每次新评论加载时,我都会加载feed.js,但这很糟糕,因为用户在10分钟内加载了大约20个feed.js
我能做点别的吗?

谢谢

我认为您可以通过将feed.js代码的第一行更改为:
$('a[cm del]')。live('click',function(){

您需要事件委派,将事件绑定到最近的静态(非动态加载)容器并委派操作

更改此项:

$('a[cm-del]').click(function(){
为此:

$(document).on('click','a[cm-del]',function(){
我不知道您的标记是什么样子的,所以我在这里使用该文档作为后备


注意:如果您使用的是jQuery我认为。live应该可以工作

$('a[cm-del]').live("click",function(){
    var cmid = $(this).attr('cm-del');
    var typeid = $(this).attr('data-type');
    $('li[last-id='+cmid+']').effect('pulsate');
    $('li[last-id='+cmid+']').hide(300);
    $.post('/post/comment.php',{cmdelete:cmid,type:typeid},function(){
    });
});
如果没有工作,那么就这样做。。 首先像这样更改feed.js

function SetEvent(){
      $('a[cm-del]').unbind("click").click(function(){
         var cmid = $(this).attr('cm-del');
         var typeid = $(this).attr('data-type');
         $('li[last-id='+cmid+']').effect('pulsate');
         $('li[last-id='+cmid+']').hide(300);
         $.post('/post/comment.php',{cmdelete:cmid,type:typeid},function(){
         });
       });
 }
现在像这样更改ajax.js

function getmorecmphoto(){
    $('li[data-hiv]').hide();
    var lastid = $('li[last-id]:last').attr('last-id');
    if(lastid === ''){
        var lastid = 0;
    }
    var oldcm = $('div[comments-id]').html();
    var photoid = $('div[comments-id]').attr('comments-id');
    $.post('/post/photo.php',{lastid:lastid,photoid:photoid},function(getlastcmphoto){
        $('div[comments-id]').html(oldcm + getlastcmphoto);
         SetEvent();
    });
}
setInterval( getmorecmphoto, 25000 );

我想它会工作的。谢谢

我会测试它..我给你可能的副本我测试它$(文档)。在('click','a[cm del]”上,function(){但是仍然不能删除新的评论-不工作我使用最新版本的jquerysorry抱歉!我忘了清除我的缓存它的工作方式了!非常感谢
function getmorecmphoto(){
    $('li[data-hiv]').hide();
    var lastid = $('li[last-id]:last').attr('last-id');
    if(lastid === ''){
        var lastid = 0;
    }
    var oldcm = $('div[comments-id]').html();
    var photoid = $('div[comments-id]').attr('comments-id');
    $.post('/post/photo.php',{lastid:lastid,photoid:photoid},function(getlastcmphoto){
        $('div[comments-id]').html(oldcm + getlastcmphoto);
         SetEvent();
    });
}
setInterval( getmorecmphoto, 25000 );