Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onClick在动态生成的div中不起作用_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript onClick在动态生成的div中不起作用

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"

我有一个动态生成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" 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();
});