jQuery动态绑定事件(on指令)

jQuery用on指令统一事件注册方式

注:jQuery1.7 之后支持

on可以注册简单的事件
//以点击事件为例
$('选择器').on('click',function(){});
也可以注册事件委托,且支持动态绑定
$('选择器').on('click','xxx',function(){});
//'xxx'可以是标签,例如 <p>,<span>,<div>
//也可以是 类名 或 id

举一个例子,方便更好的理解 动态绑定

记事本
在这里插入图片描述

       这是一个记事本,里面有一些计划,很显然,该界面 tbody 部分由三个 tr 构成,每个 tr 中都有一个事件,以下为源码:
<!--html部分-->

<table style="width: 100%;">
          <thead>
            <tr>
              <th style="width: 35%;">事件</th>
              <th style="width: 25%;">时间</th>
              <th>完成了嘛?</th>
            </tr>
          </thead>
          <tbody id="shijian">
            <tr class="list">
              <td>吃饭饭</td>
              <td>8:00</td>
              <td>
                <span>已完成</span>&nbsp;&nbsp;
                <i class="fa fa-trash-o" aria-hidden="true"></i>
              </td>
            </tr>
            <tr class="list">
              <td>睡觉觉</td>
              <td>21:00</td>
              <td>
                <span class="delete">已完成</span>&nbsp;&nbsp;
                <i class="fa fa-trash-o" aria-hidden="true"></i>
              </td>
            </tr>
            <tr class="list">
              <td>撸代码</td>
              <td>2:00</td>
              <td>
                <span class="delete">已完成</span>&nbsp;&nbsp;
                <i class="fa fa-trash-o" aria-hidden="true"></i>
              </td>
            </tr>
          </tbody>
   </table>
// js部分

//on统一事件注册方式
$(".fa-trash-o").click(function () {
  var deleteConfirm = confirm("确认删除嘛? ");
  if (deleteConfirm) {
    $(this).parent().parent().remove();
  }
});
       可以看到,垃圾桶图标代表了删除事件,这部分代码已经在js文件中写好了,当js部分的代码运行完成后,删除事件已经注册完成,故事件生效。
       可是,当我们新添加一个事件进入表格后,由于之前进行的是简单注册,故新添加事件中的垃圾桶图标就不会有点击事件,也就意味着无法删除新添加事件

解决此问题有两种方法:

       法一:  追加注册事件
    //法一: 追加注册事件
    $add.find(".fa-trash-o").click(function () {
      var deleteConfirm = confirm("确认删除嘛? ");
      if (deleteConfirm) {
        $(this).parent().parent().remove();
      }
    });

用find方法找到垃圾桶图标所在类,为其追加点击事件

       法二:  on统一事件注册方式(推荐)
//on统一事件注册方式
$("#shijian").on("click", ".fa-trash-o", function () {
  var deleteConfirm = confirm("确认删除嘛? ");
  if (deleteConfirm) {
    $(this).parent().parent().remove();
  }
});

在注册事件时,通过其父类找到事件所在类进行注册,这种方法支持了动态绑定事件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NJR10byh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值