如何使用Jquery给动态生成的控件绑定事件

4 篇文章 0 订阅
3 篇文章 0 订阅

前几天有个页面折腾了我半天,我想要实现动态添加html控件,并给新增的控件添加上点击事件,怎么也折腾不好,后来在Jquery官网上看了例子,发现原来可以这样写。示例代码如下。




    <script src="../js/jquery-1.9.1.js" type="text/javascript"></script>
    
    <script type="text/javascript">
        //页面载入时执行,绑定.add类的click事件
        $(document).ready(function () {
            $("body").on("click", ".add", function () {
                alert("body on click");
            });
        });

        var backclolor = "yellow";
        //点击button,绑定.add类的click事件,注意与上面绑定方式的不同。
        function bind() {
            $(".add").on("click", function () {
                alert("add clicked");
            });
            backclolor = "gray";
        }

        //添加新的元素到newZone
        function addNewDiv() {
            $("
   
   
added Div
").appendTo($("#newZone")); } </script>

说明:

先点击 AddNewSpan 此时新添加的div点击事件都可以被  $("body").on("click", ".add", function () {})  所捕捉到,点击黄色div会有弹窗body on click。



然后点击 bindAdded用于绑定.add类的div,再点击几次addNewSpan,新增灰色的div。此时点击黄色的div,会有2个提示框,显示add clicked 然后是body on click,而点击新增的灰色的div,只有1个body on click的提示框。



这里$("body").on("click", ".add", function () {}) 和 $(".add").on("click", function () {}) 的区别就体现出来了,第一个$('body')绑定的是整个body,所有动态新增的div点击一律有效,而后来经过一次$('.add')绑定,绑定了前面的黄色div,所以点击前面黄色的div就有两次提示,而之后又新增的灰色div没有被$('.add')的绑定绑定到,所以只能被$('body')捕捉到,而不能被$('.add')的绑定捕捉到,点击也只有body on click的提示。


两个div的弹出顺序跟javascript的事件冒泡机制有关,有空还是要多深入了解下javascript和Jquery,一知半解只会用还是不行。





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值