点击新添加的链接不执行javascriptfunction
在尝试使用jquery时,我创建了这个html和javascript。
javascript有一个弹出包含链接文本的消息的function。它还有一个函数来添加一些链接到div。一个名为remove的函数删除内部div。
$(document).ready(function(){ $('.mylinkclass').click(function(){ getLinkText(this); }); $('#remove').click(function(){ removeContents(); }); $('#add').click(function(){ addContents(); }); }); function getLinkText(that){ var txt = $(that).text(); var num = parseInt(txt); alert('num='+num); return false; } function addContents(){ $('#results').append('70 new line1
'); $('#results').append('77 new line2
'); } function removeContents(){ $('.mylinkdiv').remove(); }
当我点击原始html页面中的链接(即3个链接)时,会弹出警告框。
当我单击添加按钮时,它会向div添加两个新链接。但是, 当我点击这些新添加的链接时,警报不会弹出!
我无法理解为什么……有人能告诉我吗?
如果您使用的是jQuery 1.7,则使用.on,如果您使用的是jQuery 1.6,则使用.delegate
jQuery('#results').on('click','.mylinkclass',function() { getLinkText(this); });
演示
另一种方法是克隆现有元素Demo
var cloned = jQuery('.mylinkclass:last').clone(true); jQuery('#results').append(cloned);
在第二种情况下,事件监听器也将被复制,您不需要使用.on或.delegate。
您需要一个委托事件处理程序,因为您的项目是在dom加载后动态创建的。
$('#results').on('click', '.mylinkclass', function() { getLinkText(this); });
在第一次加载页面后添加链接到DOM时,链接不会绑定到jQuery事件。 你应该使用:
$(document).on('click', '.mylinkclass', function() { });
当我第一次遇到这个问题时,我正在使用“live()”,但你不应该使用它,因为它根据jQuery文档被弃用了。
你必须这样做:
$ ('. mylinkclass'). live ('click', function () { alert ('OK') });