我正在开发一个社交网站,我在其中实现了无限滚动。前几个不是通过ajax生成的元素运行良好。接下来使用ajax创建的元素会产生问题。以下是我进行ajax调用的代码:
alert(id);
id--;
load+=1;
$.post("ajax.php",{id:id}, function(data,value){
$(".posts").append(data);
$('.loader').hide();
});
这是一个动态创建图片、评论和点赞按钮的代码:
<?php
while($row = $result->fetch_assoc()){
$sql1 = "select likes from likes where pid='".$row["p_id"]."' ";
$result1 = $link->query($sql1);
$row1 = $result1->fetch_assoc();
?>
<img src="<?php echo $row['p_url'];?>" height="400px" width="500px" />
<p class="like" id="<?php echo $row['p_id'];?>"><?php echo $row1['likes']?></p>
<input type="button" value="like" class="btn" id="<?php echo $row['p_id'];?>" />
<input type="text" class="enter_comment value="comments" id="comm<?php echo $row['p_id'];?>"/><input type="button" value="enter" class="cbtn" id="<?php echo $row['p_id'];?>">
<?php
}
?>
在同一个文件中,我创建了onclick
事件处理程序:
$(document).ready(function(){
<!-- like button -->
$(".btn").click(function(e){
var id=$(this).attr('id');
alert("ajax function");
$.post("like.php",{id:id}, function(k){alert(k);});
});
});
现在的问题是,当数据库中的所有点赞都是0,并且我点击动态创建点赞按钮的点赞按钮时,它会保存2个点赞,而不是1个。
要实现这一点,您甚至需要在.on()函数中包装点击。任何需要在初始页面加载后通过AJAX加载的事件的事情都需要这样做,否则事件不会触发。
$('body').on('click', '.your-css-selector', function(e) {
//perform task here
}