事件代理--给多个元素调用同个函数

33 篇文章 0 订阅

每一个js事件(例如:click、mouseover等)都会冒泡到腹肌节点。当我们需要给多个元素调用同个函数时,这点会很有用。

比如要给一个表格绑定这样的行为:点击td后,把背景色设置为红色,代码如下:

$("#myTable td").click(function(){
    $(this).css("background","red");
})

假设有100个td元素,在使用以上方式时,就需要绑定100个事件,这将带来很负面的性能影响。

代替这种效率很差的多元素事件监听的方法就是:只需向它们的父节点绑定一次事件,然后通过event.target获取到点击的当前元素,代码如下:

$("#mytable").click(function (e) {
    var $clicked = $(e.target);        //e.target捕捉到触发的目标元素
    $clicked.css("background","red");
 });

改进方式中,只为一个元素绑定了1个事件。显然,这种方式的性能要优于之前那种。同时,jQuery 1.7中提供了一个新的方式on(),来将整个事件监听封装到一个便利方法中,如下所示:

$("#mytable").on("click","td",function () {
    $(this).css("background","red");
 });


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值