jQuery前置元素

我有一个包含锚标记的列表项。单击X即可,这很好。但是,当我通过jQuery快速添加一个新列表项,然后单击此新列表项中的anchor标签时,单击未注册。下面的代码段。 点击时:
$(\'ul#foo li p a#delete\').click(function(){ 

alert(\'hmm\');
});
在ajax调用之后添加新元素:
onComplete: function(id, fileName, data){
            $(\'ul#foo\').prepend(data.li);
        }
现在,我认为它与DOM不了解新元素的事实有关? 所以经过一番谷歌搜索后,我意识到每个人都说要在\'change \'上使用.live() 所以我尝试了.live():
$(\'ul#foo\').live(\'change\', function() {
    //something
});
多数民众赞成在卡住。香港专业教育学院从未使用过.live()。我是否缺少某些东西,我做错了吗?任何帮助,将不胜感激。 想要将点击注册到我的新即时元素上的ID是什么。 谢谢阅读     
已邀请:
您所困惑的实际上是选择器。通过jQuery选择正确的选项后,其余的操作将更容易进行。好的,所以您的html应该看起来像这样:
<ul>
    <li><a class=\"someUniqueClassToTheseLinks\" href=\"whatever\"></a></li>
</ul>
这样,当您通过jQuery添加li时,它将如下所示:
<ul>
    <li><a class=\"someUniqueClassToTheseLinks\" href=\"whatever\"></a></li>
    <li><a class=\"someUniqueClassToTheseLinks\" href=\"whateverElse\"></a></li>
</ul>
现在,您的现场活动注册就是:
$(\'a.someUniqueClassToTheseLinks\').live(\'click\', function(event) {
    ...
});
    
您需要jQuery proxy()。 http://api.jquery.com/delegate/ 它的工作方式类似于
.live
,但比
.live
稍微容易一些,建议将其保留下来,而really6ѭ只是为了向后兼容而保留。     
您正在正确使用
live
,但我认为您不想要
\'change\'
事件。您应该改用
\'click\'
。另外,您不想使用
ul#foo
选择器,而是想回到原来的
ul#foo li p a#delete
选择器。 就像是:
$(\'ul#foo li p a#delete\').live(\'click\', function(){ 

});
正如Milimetric指出的那样,由于选择器使用的是“ 14”选择器类型,因此这也将有其自身的问题。元素ID在页面上必须唯一。确实,您想要为要使用click事件处理程序捕获的所有元素分配一个css类,然后相应地更改选择器。 而不是
<a href=\"#\" id=\"delete\">
,您可以做do16ѭ并将选择器更改为
ul#foo li p a.delete
。     

要回复问题请先登录注册