附加内容后jQuery点击事件

想知道为什么下面的例子不起作用?

Load the list 
    $(document).ready(function() { $('#load_list').click(function() { $('ul').append('
  • Click here
  • '); return false; }); $('ul li a').click(function() { alert('Thank you for clicking'); return false; }); });

    因为在定义click处理程序时,您要追加的元素不存在,所以它们是动态创建的。 要解决这个问题,您可以使用jQuery中的delegate()方法。

     $('ul').delegate('a','click',function() { // your code here ... }); 

    在线示例: http //jsfiddle.net/J5QJ9/

    从jQuery 1.7开始,您可以使用.on()处理程序将新创建的元素绑定到“click”事件:

      

    (这是原始示例)。

    .live从1.7开始被弃用。 试试这个(jquery 2.1.4):

    HTML:

     Load the list 

      JQuery的:

       $(document).ready(function() { $('#load_list').click(function() { $('ul').html(""); $("
    • ", { "class" : "someClass", text: "Click here", click: function() { alert($(this).text()); } }).appendTo('ul'); }); });

      或类似的东西(但我没有找到如何附加点击锚点):

       $(document).ready(function() { $('#load_list').click(function() { $('ul').html(""); $('
    • Click here
    • ').on({ click: function() { alert("hoi"); } }).appendTo("ul"); }); });
       $(document).on('click','ul li a', function(){ // Content Code }); 

      因为你在元素放在你需要使用的dom之前应用click事件.live()

      尝试这个新代码,它会删除旧元素的现有点击事件,然后再次为旧元素和新元素添加它们。

       Load the list