Jquery无法选择新的HTML数据追加

时间:2012-05-13 00:08:46

标签: php jquery ajax jquery-selectors simple-html-dom

我追加从Ajax收到的数据,它还包含一个bsubmit类的divison。 当页面加载时,如果我点击包含类bsubit的div,则执行以下函数但是当我点击同时包含类bsubmit的新附加数据时,下面的代码不起作用。

这是代码

     $(function() {
    $(".bsubmit").click(function() {
    var id = $(this).parent().parent().attr("id");
    var comm= document.getElementById(id).getElementsByClassName("commentadd")[0].value;


      $.ajax({
       type: "POST",
       url: "comment.php",
       data: {id:id, comm:comm},
       cache: false,
       success: function(data){
        $('.addcomment').slideUp('slow', function() {

        });

// Bottom Line not working

        $("#"+id).find(".item_comment").append(data);   // DATA Contains a div with class bsubmit
         $(data).appendTo("#"+id).find(".item_comment"); // Now these Appended Div isnt calling this function again,  Why ? I want to call them again
        $('#load').fadeOut();
      }

     });


    return false;
        });


    });

3 个答案:

答案 0 :(得分:3)

如果我理解你的问题:您是否尝试过使用.on()方法? (jQuery 1.7)

$(yourParentElement).on('click','.bsubmit',function() {

答案 1 :(得分:2)

您的问题是您将点击事件绑定到.bsubmit类,但该点击事件仅受到文档中已有的.bsubmit的攻击,而不是新创建的。{/ p >

因此,您需要做的是,使用live()on(),具体取决于您的Jquery版本。

更改此行:

$(".bsubmit").click(function() {

Jquery LIVE

$(".bsubmit").live("click", function() {

Jquery ON

$(".bsubmit").on("click", function() {

答案 2 :(得分:1)

appendTo不会返回父级。

$("#"+id).find(".item_comment").append(data);   
$(data).appendTo("#"+id).parent().find(".item_comment"); // Use "parent()"
$('#load').fadeOut();

但你真的应该缓存一些DOM元素......

var id = $(this).parent().parent().attr("id");

更改为:

var $parent = $(this).parent().parent();

然后:

$("#"+id).find(".item_comment").append(data);

更改为:

$parent.find(".item_comment").append(data);