Javascript onClick在动态生成的div中不起作用
我有一个动态生成div的jquery代码 问题是a标记的onclick函数没有调用所需的函数 这是密码Javascript onClick在动态生成的div中不起作用,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个动态生成div的jquery代码 问题是a标记的onclick函数没有调用所需的函数 这是密码 $("#new").append(' <ul class="#...#"> <li> <a href="./d.html?n1='+item[0]+'&n2='+item[2]+'&n3='+item[3]+'"> <input type="hidden"
$("#new").append('
<ul class="#...#">
<li>
<a href="./d.html?n1='+item[0]+'&n2='+item[2]+'&n3='+item[3]+'">
<input type="hidden" value='+item[0]+'>
<img style="height: 64px; width: 64px;" class="#...#"
src="image.png" width="40" height="40" />
<span class="#...#">
<b>'+item[0]+'</b>
'+item[1]+'......
</span>
</a>
<br />
<div>
<a onClick="insert();" href="#">
<i class="icon1"></i>
</a>
<a href="2.php?q='+q+'&n='+item[0]+'" id="icon2" name="icon2">
<i class="icon2"></i>
</a>
</div>
</li>
</ul>
');
$(“#新建”).append('
');
我使用上述代码作为ajax成功函数
a标记没有调用insert()函数
我搜索了错误,但找不到正确的答案
我做错了什么?
THSNK预先使用JavaScript事件委派来分离关注点:
$(function() {
$(document.body).on('click', 'ul.someClass div a', function() {
// insert() method logic goes here
});
});
第二个参数指定事件目标。此事件绑定到文档正文,因此它始终存在。目标DOM对象可以在以后的某个时候根据AJAX生成,也可以从文档中删除。实际的目标检查发生在用户实际单击某个对象时
还将类属性添加到
或
然后,jQuery
on()
方法的目标属性可以简化为仅'。btn insert'
当您处理动态内容时,我建议您使用DOM事件委派。ideea是在动态添加内容的父级上添加侦听器
这说明了如何做,以及它是如何工作的
将自定义类(如“catchClick”)添加到捕捉单击事件所需的元素中
var linkToAdd = '<a class="catchClick" href="#">My link</a>';
var $linkToAdd = $(linkToAdd);
$('#new').append($linkToAdd);
将新的可单击项添加到文档后,以及每次将新的可单击项添加到文档后,设置单击事件处理程序。查看jQuery的“live”方法:jQuery的“live”方法:版本不推荐:1.7,删除:1.9您可以尝试将
insert()
函数放入$(document).ready(function(){..insert()function code here..});
@wild\u那里没有什么不好的建议。我建议使用事件委派
var linkToAdd = '<a class="catchClick" href="#">My link</a>';
var $linkToAdd = $(linkToAdd);
$('#new').append($linkToAdd);
$(document).on('click', '.catchClick', function(e) {
// do your stuff here
// you probably need to get a jquery reference to the element that was clicked:
var $this = $(this);
// you probably want to stop the event's default actions so we'll add this:
e.stopPropagation();
e.preventDefault();
});