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 );