jQuery单击附加元素

jQuery单击附加元素,jquery,click,append,Jquery,Click,Append,我用jQuery生成了一些html链接,并将其附加到一些div中 但是现在我不能调用click方法,当这些元素被附加时(当它们被硬编码成html时,它工作正常) $(“#某物a”)。单击(函数()… 有人知道这方面的解决方案吗?用于以下情况: $('#something').delegate('a', 'click', function() { 这会在#something上附加一个单击处理程序,而不是指向的方向,如下所示: $('#something a').live('click', fun

我用jQuery生成了一些html链接,并将其附加到一些div中 但是现在我不能调用click方法,当这些元素被附加时(当它们被硬编码成html时,它工作正常)
$(“#某物a”)。单击(函数()…

有人知道这方面的解决方案吗?

用于以下情况:

$('#something').delegate('a', 'click', function() {
这会在
#something
上附加一个
单击
处理程序,而不是指向
的方向,如下所示:

$('#something a').live('click', function() {

您需要使用live函数确保click事件绑定到加载页面后添加到DOM的元素:

$('#something a').live('click',function() .....

在添加元素时添加[click]事件也是有效的,如下所示:

$('<someElement>').click(function(){ 
    $('<someElement>').append('<htmlCodeToAppend>');
    $('<appendedElement>').click(function() { /* do something */ });
});
$('')。单击(函数(){
$('')。附加('');
$('')。单击(函数(){/*执行操作*/});
});
这种方法可以做到这一点,但我不确定是否有任何需要注意的地方——也许有一位专业人士可以介入进来

干杯,
Erik

@Nick-为什么使用live更差?只是好奇,因为我经常使用它。@Nick-你能评论一下.live()更差的原因吗?我真的很感兴趣。干杯!@Josh,@Jakub-带着
.live()
,让我们看一下上面的代码-<代码>$(“#什么a”)
选择器会立即运行,但我们不在乎它发现了什么…结果是浪费的。此外,由于它附加到
文档
,因此每次
单击
都必须对照该选择器进行检查。使用
.delegate()
时,只有非常快的
$(“#某物”)
选择器运行,我们使用结果。而且只需从
内部单击一些东西,因为它们在父级进行检查,所以
.delegate()
解决了两个性能原因…使用更昂贵的选择器,收益更大。呃,尼克,我讨厌你(不是真的),我实现了一个类似委托的东西(除了这个总是指向元素触发),但几周后才意识到jquery完成了它。哦,这就是我没有阅读整个api所得到的结果。+1这个答案帮助了我。顺便说一下,一年后,jquery 1.7+取代了.delegate()