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

时间:2016-01-02 06:29:42

标签: 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();            
});

然后是代码,然后动态创建图像,注释和喜欢按钮:

<?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。

1 个答案:

答案 0 :(得分:0)

为此,您需要在.on()函数中包含单击。任何需要在初始页面加载后通过AJAX加载的事件都需要这样做,否则事件不会触发。

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