javascript - 关于动态添加内容绑定点击事件的问题
高洛峰
高洛峰 2017-04-11 09:10:32
[JavaScript讨论组]

1.程序说明:给一个无序列表动态添加节点,绑定删除事件函数并调用;
2.调用删除事件1和事件2必须同时存在才能正常删除原有节点和新增节点;
3.很明显在触发点击添加之前删除事件1是不会触发的,所以刷新后直接点击删除按钮会执行删除事件2并alert(2);
4.但是刷新后点击添加按钮:
a.删除新增的节点,触发删除事件1并alert(1);
b.删除原有的节点,(--重点来了--)先触发删除事件2并alert(2),然后多次触发删除事件1并alert(1);
5.如果将删除事件1注掉,无法删除新增的节点元素(找过各种答案,有说是用bind绑定的,有说必须$(document).on('click','button',function(){--something--});这样写的,还有说要绑定在父元素上的,也有说用委托事件的……),然而并没有什么用;
6.如果将删除事件2注掉,很显然在点击新增按钮之前无法触发删除事件1,只有先新增节点后才能正常执行删除事件1;

所以,请教大神两个问题:

  1. 4.b多次触发删除事件1的原因;

  2. 如何正确给动态事件绑定点击事件;

代码如下:

<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="http://code.jquery.com/jquery-latest.js"> </script>
</head>
<ul id='ul'>
    <li><button class='btns'>删除</button></li>
    <li><button class='btns'>删除</button></li>
    <li><button class='btns'>删除</button></li>
    <li><button class='btns'>删除</button></li>
    <li><button class='btns'>删除</button></li>
</ul>
<button id="addLi">添加</button>
<body>
</body>
<script>
$(function(){
    $('#addLi').click(function(){
        $('#ul').append('<li><button class="btns">删除</button></li>'); 
        dels(1); //删除事件1
    });
    //dels(2);    //删除事件2
    function dels(e){
        $('.btns').bind('click','button',function(){
            $(this).parent().remove();
            alert(e);
        });
    }
});
</script>
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
高洛峰
    (function() {
        var del = function() {
            $(this).remove();
        };

        $("#ul li").click(del);

        $('#addLi').click(function() {
            $('#ul').append('<li><button class="btns">删除</button></li>');
            $('#ul').children().last().click(del);
        });

    })();

jquery的click事件是叠加的。

var a = document.createElement("p");
a.innerHTML = "测试click";
$("body").append(a);
$(a).click(function(){console.log("第一个click事件")});
$(a).click(function(){console.log("第二个click事件")});

执行之后,点击标签,你会发现输出了两句话,而不是只输出第二句话。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号