jQuery-on()给动态生成元素绑定事件

单个事件注册

 on() 绑定事件

 on()方法绑定事件的优势

优势1:可以绑定多个事件,多个事件处理程序

        // (1) 可以绑定多个事件
        $("div").on({
            mouseenter: function () {
                $(this).css("background", "skyblue")
            },
            mouseleave: function () {
                $(this).css("background", "purple")
            },
            click: function () {
                $(this).css("background", "yellow")
            }
        })

优势2:可以事件委派操作

事件委派:将事件统一绑定给元素共同的祖先元素(后代元素事件触发时,通过冒泡,通过祖先元素的响应函数来处理事件),这样可以只绑定一次,即可应用到多个元素上。事件的委派利用了冒泡,通过委派可以减少事件绑定的次数,减少了DOM操作,提高程序的性能event中的target表示的触发事件的对象 ,使用它对触发事件的元素进行判断。

 优势3:可以给动态生成的元素绑定事件

 在做发布评论案例中,每点击一次发布按钮,就在ul中动态生成一个li以及a(删除)

后续要删除li,就需要给a添加点击事件,但a是动态生成的

$("ul li a").click(function () {} // 此时click不能给动态创建的a绑定事件 

于是用on()方法给a添加事件

        $(".btn").on("click", function () {
            // 点击发布按钮 动态创建li
            var li = $("<li></li>")
            li.html($(".txt").val() + "<a href='javascript:;'>删除</a>")
            $("ul").prepend(li)
            // 让评论下拉出来
            li.slideDown()
            $(".txt").val("")
        })
        // $("ul li a").click(function () {} // 此时click不能给动态创建的a绑定事件
        // on可以给未来动态创建的元素绑定事件
        // 点击删除按钮 删除动态创建的li
        $("ul").on("click", "li a", function () {
            $(this).parent("li").slideUp(function () {
                $(this).remove()
            })
        })

发布评论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值