我已经产生了用jQuery一些HTML链接,并将其添加到一些DIV 但它接缝,我不能调用点击方法现在,当这些元素被添加(它的工作确定的时候被硬编码到HTML) $('#something a').click(function() ...
jQuery的点击附加元素
有谁知道一个解决方案?
我已经产生了用jQuery一些HTML链接,并将其添加到一些DIV 但它接缝,我不能调用点击方法现在,当这些元素被添加(它的工作确定的时候被硬编码到HTML) $('#something a').click(function() ...
jQuery的点击附加元素
有谁知道一个解决方案?
使用.delegate()
对于这些情况:
$('#something').delegate('a', 'click', function() {
这个高度上#something
一个click
处理程序,而不是方向内<a>
元素...所以它适用于后来追加的锚。 (有几个原因更糟)版本的另一种方法是.live()
这样的:
$('#something a').live('click', function() {
您需要使用直播功能,以确保点击事件被绑定到已添加到DOM页面后元素已加载:
$('#something a').live('click',function() .....
效果很好,谢谢1 – Dejan 2010-12-14 21:33:35
什么也工作是添加[点击]事件的附加元素,像这样的时候:
$('<someElement>').click(function(){
$('<someElement>').append('<htmlCodeToAppend>');
$('<appendedElement>').click(function() { /* do something */ });
});
这种方法做这项工作,但我不知道我f有任何警告 - 也许其中一个专业人士可能会好好介入。
干杯, 埃里克
@Nick - 为什么用活更糟?只是好奇,因为我用了很多。 – Josh 2010-12-14 18:26:19
@Nick - 我真正感兴趣的 - 请你为什么.live()是糟糕的原因发表评论。干杯! – 2010-12-14 18:26:55
@Josh,@Jakub - 用'.live()',让我们看看上面的代码 - '$('#a a')'选择器立即运行,但我们不在乎它发现了什么......结果被浪费了。另外,因为它附加到'document',*必须根据该选择器检查每个*'click'。随着'.delegate()'只有非常快'$(“#东西”)'选择得到运行,而我们使用的结果。也只有从内部'#something'需要进行检查,因为他们是在该父签点击,所以'.delegate()'地址2个性能的原因...有一个更昂贵的选择,收益更大。 – 2010-12-14 18:28:16