如何在ajax和php中向动态创建的按钮添加事件处理程序?

如何在ajax和php中向动态创建的按钮添加事件处理程序?,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我正在开发一个社交网站,在其中我实现了无限滚动。前几个不是通过ajax生成的元素工作正常。接下来使用ajax创建的元素会产生一个问题。下面是我的代码,在其中我进行了一个ajax调用: alert(id); id--; load+=1; $.post("ajax.php",{id:id}, function(data,value){ $(".posts").append(data); $('.loader').hide(); }); 下面是动态创建图像、注

我正在开发一个社交网站,在其中我实现了无限滚动。前几个不是通过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
}
?>

现在的问题是,当数据库中的所有喜欢都是0时,我点击“动态创建喜欢”按钮的“喜欢”按钮,然后它会保存2个喜欢,而不是1个

要使其工作,您需要在.on()函数中包装click-even。任何需要在初始页面加载后通过AJAX加载的事件都需要这样做,否则不会触发事件

$('body').on('click', '.your-css-selector', function(e) {
    //perform task here
}

事件被激发。问题是它在一次点击中被多次发射。所以有什么东西在发射它,然后再发射它?我不太确定,但有时需要调用以阻止事件冒泡并导致不必要的错误behaviour@JamesScottTayler要停止事件冒泡,应使用
stopPropagation()
not
preventDefault()
$('body').on('click', '.your-css-selector', function(e) {
    //perform task here
}