其他分享
首页 > 其他分享> > jQuery注册事件的发展历程(简单/bind/delegate/on)

jQuery注册事件的发展历程(简单/bind/delegate/on)

作者:互联网

<!--@description-->
<!--@author beyondx-->
<!--@date Created in 2022/08/02/ 6:09-->
<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>标题</title>
  <style> 
    div {
      width: 200px;
      height: 200px;
      margin-top: 10px;
    }
    .one  {
      border: 1px solid red;
    }
    .two {
      border: 1px solid green;
    }
  </style>
</head>
<body>
  <input type="button" value="按钮" id="btn"/> <br/><br/>
  <div class="one" id="one"></div>
  <span style="border:1px solid green">我是一个span标签</span>


</body>
</html>
<script src="jquery-1.12.4.js"></script>
<script>
  $(function () {
    /**
     * 原生js
     * 用原生的js 给 div 注册单击事件.
     * 原生js注册相同的事件,后面的会把前面的给覆盖.
     */
    // document.getElementById("one").onclick = function () {
    //   alert("原生js_单击事件1");
    // };
    // document.getElementById("one").onclick = function () {
    //   alert("原生技术_单击事件, 啦啦啦");
    // };

    /**
     * jQuery
     * 对 原生js事件 进行了封装, 增强了 事件处理能力
     * 给 同一个元素 注册 同样的事件,后面的 不会 把前面的 给覆盖.
     */
    // $('#one').click(function () {
    //   alert("jQuery_单击事件1");
    // });
    // $('#one').click(function () {
    //   alert("jQuery_单击事件2");
    // });




    //--------------------------------------------------------------------------------------
    /**
     * jQuery注册事件 的 发展历程
     *
     * 简单事件注册 -> bind方式注册 -> delegate注册委托事件
     *
     * 1. 最开始 简单事件绑定(不支持 同时注册; 不支持 动态注册)
     */

    /**
     *  1.简单事件绑定 click();
     * 不支持同时注册,也不支持动态注册.
     * 下面这个例子, 叫 一前一后 注册, 不是 同时注册
     */

    // $('div').click(function () {
    //   console.log("jQuery_鼠标单击事件");
    // });
    // $('div').mouseenter(function () {
    //   console.log("jQuery_鼠标移入事件");
    // });

    /**
     * 什么叫 同时注册
     * 给按钮设置点击事件,创建一个div.
     *
     * 动态注册
     * 已经注册完事件, 新创建的 元素, 不具有 事件
     */
    $('#btn').click(function () {
      var $divNew = $('<div class="two"></div>');
      // 将 创建的 div, 添加到 body
      $('body').append($divNew);
    });

    /**
     * 2. bind方式注册事件
     * 支持同时注册,也不支持动态注册.
     */
    // $('div').bind({
    //   mouseenter: function () {
    //     console.log("jQuery同时注册_鼠标移入事件");
    //   },
    //   click: function () {
    //     console.log("jQuery同时注册_鼠标单击事件");
    //   }
    // });

    // 另一种 书写方式
    // /**
    //  * 第1个参数: 事件类型
    //  * 第2个参数: 事件处理程序
    //  */
    // $('div').bind('click mouseenter', function () {
    //   // 事件响应方法
    // });

    /**
     * 3.delegate注册委托事件-原理是 事件冒泡.
     * 支持 同时注册,也支持 动态注册.
     */
    $('body').delegate('div', {
      mouseenter: function () {
        console.log("jQuery_delegate_鼠标移入事件");
      },
      click: function () {
        console.log("jQuery_delegate_鼠标单击事件");
      }
    });

    /**
     * 4.jQuery1.7之后,jQuery用on统一了所有事件的注册方式。
     */

    /**
     * 1. on简单注册事件.
     * 不支持动态注册的.
     */

    /**
     * 4.2 on委托注册
     * 支持动态注册的.
     */

  });
</script>

在这里插入图片描述

标签:jQuery,function,单击,bind,delegate,注册,div,事件
来源: https://www.cnblogs.com/beyondx/p/16542455.html