2013-12-09 30 views
-1

我有一个工作的jQuery函数,当另一个div被点击时创建一个div。 当点击这个div ...jQuery创建功能不工作

<div class='col_1' data-parent_id='parent' data-child_id='1002'>List 1</div> 

这个div是使用下面的功能和一些PHP创建。

<div class='col_2' data-parent_id='1002' data-child_id='1003'>List 2</div> 

jQuery的

$(function() { 
    $('.col_1').click(function(){ 
    var parent_id = $(this).data("parent_id"); 
    var child_id = $(this).data("child_id"); 
    $.post("array-2.php",{parent_id: parent_id, child_id: child_id}, 
     function(data){ 
     $('#column_2').empty(); 
     $('#column_2').append(data); 

    }); 
    }); 
}); 
$(function() { //// New part:Trys to make the created div functional, 
     $('.col_2').click(function(){ 
     var parent_id = $(this).data("parent_id"); 
     var child_id = $(this).data("child_id"); 
     $.post("array-2.php",{parent_id: parent_id, child_id: child_id}, 
      function(data){ 
      $('#column_3').empty(); 
      $('#column_3').append(data); 

     }); 
     }); 
    }); 

我希望新的div相同充当第一个div做出第三个DIV /列表以及(和列表的更创建的列)。所以我添加了jQuery的后半部分,但它似乎不起作用。有没有人有任何想法,为什么这将无法正常工作,或者我怎样才能使它变得更好?谢谢。

你基本上可以看到我在这里想要做什么。 actual project

回答

1

由于col_2元素是动态创建的,因此您需要使用event delegation向这些元素注册事件处理程序。

当你使用$('.col_2').click(....);来注册一个事件处理函数时,它将把注册句柄仅仅写在代码执行时已经存在于DOM中的那些元素,在这种情况下,因为这些元素是在处理程序之后创建的没有得到重视新创建的元素

$(function() { //// New part:Trys to make the created div functional, 
    $('#column_2').on('click', '.col_2', function() { 
     var parent_id = $(this).data("parent_id"); 
     var child_id = $(this).data("child_id"); 
     $.post("array-2.php", { 
      parent_id: parent_id, 
      child_id: child_id 
     }, 

     function (data) { 
      $('#column_3').empty(); 
      $('#column_3').append(data); 

     }); 
    }); 
}); 
+0

由于一吨!我一直在寻找一个错误,但认为它与此有关。非常感谢!谢谢 – user3065173

1

而不是使用$('.col_2').click(function(){..}); 尝试$(document).on("click",".col_2",function(){..}); 因为你正在试图绑定点击事件到一个元素,甚至当它不存在于DOM的。

0

尝试使用这个

$(document).on("click",".col_2",function(){ 
.............. 
}); 

而不是

$('.col_2').click(function(){ 
.............. 
}); 

入住这jsfiddle