我有使用live ajax php的评论系统,还包括对该评论的投票系统
逻辑:当我发布新评论时,系统将使用方法发布调用ajax函数,并在textarea上方显示响应以进行评论,该响应包括投票系统(类=" with_unique_id"),但是当我点击那个投票时,它不会调用ajax函数(在浏览器控制台中没有发生任何事情),而在当前评论中显示新评论的上方,它工作正常。
这是我的ajax投票代码
jQuery(document).ready(function($){
$(".voteMe").click(function() {
var voteId = this.id;
var upOrDown = voteId.split('_');
$.ajax({
type: "post",
url: "<?php echo base_url('blog/likepost');?>/"+upOrDown[0],
cache: false,
data:'voteId='+upOrDown[0] + '&upOrDown=' +upOrDown[1],
success: function(response){
try{
if(response=='true'){
var newValue = parseInt($("#"+voteId+'_result').text()) + 1;
$("#"+voteId+'_result').html(newValue);
document.getElementById('likeStatus_'+upOrDown[0]).innerHTML = 'Success';
$("#likeStatus_"+upOrDown[0]).show();
setTimeout(function() { $("#likeStatus_"+upOrDown[0]).hide(); }, 5000);
}else{
$("#likeStatus_"+upOrDown[0]).show();
document.getElementById('likeStatus_'+upOrDown[0]).innerHTML = 'Liked';
setTimeout(function() { $("#likeStatus_"+upOrDown[0]).hide(); }, 5000);
}
}catch(err) {
alert(err.message);
}
},
error: function(){
alert('Error while request..');
}
});
});
});
答案 0 :(得分:0)
我花了一段时间阅读你的代码,但我想这是根本原因:
if(response=='true'){
var newValue = parseInt($("#"+voteId+'_result').text()) + 1;
$("#"+voteId+'_result').html(newValue);
document.getElementById('likeStatus_'+upOrDown[0]).innerHTML = 'Success';
$("#likeStatus_"+upOrDown[0]).show();
setTimeout(function() { $("#likeStatus_"+upOrDown[0]).hide(); }, 5000);
}
这一行:
$("#"+voteId+'_result').html(newValue);
这将成为您想要再次点击的链接。对? 如果是这样,那么您需要重新分配事件处理程序。 通过替换DOM元素,您还删除了指定的事件处理程序
PS:您的代码非常难以阅读。维持它将是一场噩梦。
答案 1 :(得分:0)
我修复了我的代码,添加了相同的ajax代码函数以响应当前具有不同id的ajax。 三江源