-1
 var post = '<img class="img_proids" src="image/thumbnail/' + usr_data[2] + '"/><div class="div_postcontent"><ul class="ul_postcontent">';
 post = post + '<li><a class="a_unames" href="#" usr_data[1] + '</a>';
 post = post + '<span class="bu_delpost">Delete this post<input type="hidden" value="'+ result[1] + '"/></span></li></ul></div><div class="float_clear"></div><br><hr><br>';
 p_type.after(post); // append the post here using jquery 

我所做的是,当用户发布一些数据时,我不希望整个页面刷新。因此,我使用 ajax 请求将数据发送到服务器,并使用 jQuery 将帖子内容附加到页面。但事件:

$("span.bu_delpost").click(function(){ // see 3rd line, span class='bu_delpost'

   var d_postid =  $(this).find("input").val();
   var p_type = $("#inp_type").val();

    $.post("ajax/ajx_dpost.php",{d_post:d_postid,type:p_type},function(result){
               alert(result)                
});

});

似乎不适用于附加的帖子,但它似乎适用于从数据库开始加载的帖子。

为什么这个事件对新添加的 span 元素不起作用?然而,CSS 属性似乎适用于这个新添加的元素,但不适用于 JavaScript 事件。

注意:JavaScript 事件写在jquery.posts.js文件中,并使用包含在 html 文件中<script src="jquery/jquery.posts.js"></script>

4

2 回答 2

2

事件委托- 因为元素被动态添加到 DOM

改变

$("span.bu_delpost").click(function()

$(document).on('click', 'span.bu_delpost', function()

这会将事件附加到文档上,并在事件冒泡时处理它。

为了性能,总是更好的主意替换document为 a 。staticParent container

于 2013-07-29T18:28:38.450 回答
1

对于 jQuery 1.8+

 $(document).on('click', 'span.bu_delpost', function(e){ // see 3rd line, span class='bu_delpost'

       var d_postid =  $(this).find("input").val();
       var p_type = $("#inp_type").val();

        $.post("ajax/ajx_dpost.php",{d_post:d_postid,type:p_type},function(result){
                   alert(result)                
    });

    });

如果您使用之前的版本,您可以使用

$("span.bu_delpost").live('click', function (){
//here goes your code
});
于 2013-07-29T18:30:32.237 回答