IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JQuery-事件处理 -> 正文阅读

[JavaScript知识库]JQuery-事件处理

事件绑定

eventName(fn);

  • 编码效率略高,部分事件JQuery事件没有实现,所以不能添加。(只能用JQuery定义的事件)
  $("button").click(function () {
    alert("hello word");
  });

on(eventName,fn);

  • 编码效率略低,所有js事件都可以添加
  $("button").on("click", function () {
    alert("hello word2S");
  });

注意:两种方法都可以添加多个相同/不同类型的事件,不会覆盖

事件解绑

off(eve,[sel],[fn])

  • off方法如果不传递参数, 会移除所有的事件
  $("button").off();
  • off方法如果传递一个参数, 会移除所有指定类型的事件
  $("button").off("click");
  • off方法如果传递两个参数, 会移除所有指定类型的指定事件
   function test1() {
            alert("hello lmx");
    }
    function test2() {
      alert("hello 123");
    }
    // 编写jQuery相关代码
    $("button").click(test1);
    $("button").click(test2);
    $("button").mouseleave(function () {
      alert("hello mouseleave");
    });
    $("button").mouseenter(function () {
      alert("hello mouseenter");
    });
    // off方法如果不传递参数, 会移除所有的事件
    $("button").off();
    // off方法如果传递一个参数, 会移除所有指定类型的事件
    $("button").off("click");
    // off方法如果传递两个参数, 会移除所有指定类型的指定事件
    $("button").off("click", test1);

什么是冒泡事件?

  • 点击father的时候会弹出father

  • 点击son的时候会弹出son和father

如何阻止冒泡事件?

  • 方法1:添加return false

  • 方法2:event.stopPropagation();

什么是默认行为?

  • 例如:点击a标签会默认跳转链接

如何阻止默认行为?

  • 方法1:添加return false

  • 方法2:event.preventDefault();

<script>
      $(function () {
        $(".father").click(function () {
          alert("我是father");
        });
        $(".son").click(function (event) {
          alert("我是son");
          //方法1
             return false;
          //方法2
          event.stopPropagation();
        });
        $("a").click(function (event) {
          alert("点击了a标签");
          //方法1
          return false;
          //方法2
          event.preventDefault();
        });
      });
    </script>
  </head>
  <body>
    <div class="father">
      <div class="son"></div>
    </div>
    <a href="http://www.baidu.com">百度一下</a>
  </body>

事件自动触发

trigger()

triggerHandler()

    $(".father").click(function () {
      alert("我是father");
    });
    $(".son").click(function () {
      alert("我是son");
    });
    /*
    trigger: 如果利用trigger自动触发事件,会触发事件冒泡
    triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发事件冒泡
    */
    $(".son").trigger("click");
    $(".son").triggerHandler("click");
    $("span").click(function () {
      alert("点击了span标签");
    });
    /*
    trigger: 如果利用trigger自动触发事件,会触发默认行为
    triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发默认行为
    */
    $("span").trigger("click");
    $("a").triggerHandler("click");

trigger与triggerHandler区别

  • trigger: 如果利用trigger自动触发事件,会触发事件冒泡
    triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发事件冒泡

  • trigger: 如果利用trigger自动触发事件,会触发默认行为
    triggerHandler: 如果利用triggerHandler自动触发事件, 不会触发默认行为

自定义事件

自定义事件不是真正意义上的事件,可以把它理解为自定义函数,触发自定义事件就相当于调用自定义函数。

想要自定义事件, 必须满足两个条件

  1. 事件必须是通过on绑定的

  2. 事件必须通过trigger来触发

    $(".son").on("myClick", function () {
      alert("点击了son");
    });
    $(".son").trigger("myClick");

事件命名空间

jQuery支持事件命名空间,以方便事件管理。例如,在下面的示例中,为div元素绑定多个事件类型,然后使用命名空间进行规范,从而方便管理。所谓事件命名空间,就是事件类型后面以点语法附加一个别名,以便引用事件,如”myClick.one”,其中”one”就是click当前事件类型的别名,即事件命名空间(相当于给自定义事件起别名)

    $(".son").on("myClick.one", function () {      alert("myClick1");    });    $(".son").on("myClick.two", function () {      alert("myClick2");    });    $(".son").trigger("myClick.one");

事件命名空间注意点

利用trigger触发子元素 命名空间的事件, 那么父元素带相同命名空间的事件也会被触发. 而父元素没有命名空间的事件不会被触发
利用trigger触发子元素不带 命名空间的事件,那么子元素所有相同类型的事件和父元素所有相同类型的事件都会被触发

  $(".father").on("click.ls", function () {    alert("father click1");  });  $(".father").on("click", function () {    alert("father click2");  });  $(".son").on("click.ls", function () {    alert("son click1");  });  $(".son").trigger("click.ls");//弹出son click1 和 father click1  $(".son").trigger("click");//弹出son click1 和 father click1 和 father click2

事件委托

delegate(selector,[type],[data],fn)

  • 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

  • 使用 delegate() 方法的事件处理程序适用于当前或 未来 的元素(比如由脚本创建的新元素)。

/*以下代码的含义, 让ul帮li监听click事件之所以能够监听, 是因为入口函数执行的时候ul就已经存在了, 所以能够添加事件之所以this是li,是因为我们点击的是li, 而li没有click事件, 所以事件冒泡传递给了ul,ul响应了事件, 既然事件是从li传递过来的,所以ul必然指定this是谁*/$("ul").delegate("li", "click", function () {  console.log($(this).text());});

注意:jQuery 3.0中已弃用此方法,请用 on()代替。

 $("ul").on("click", "li", function () {    console.log($(this).text());  });

移入移出事件

mouseover()

  • 鼠标移入事件

mouseout()

  • 鼠标移出事件

子元素被移入移出也会触发父元素的事件

    $(".father").mouseenter(function () {      
    		console.log("鼠标移入了");    
    });    
    $(".father").mouseleave(function () {      
    		console.log("鼠标移出了");   
     });

mouseenter()

  • 鼠标移入事件

mouseleave()

  • 鼠标移出事件

子元素被移入移出不会触发父元素的事件

      $(".father").mouseenter(function () {        
      		console.log("鼠标移入了");      
      });      
      $(".father").mouseleave(function () {        
      		console.log("鼠标移出了");      
      });

hover([over],out)

  • 一个参数时:移入移出都触发

  • 两个参数时:第一个移入触发,第二个移出触发

      $(".father").hover(
        function () {
          console.log("鼠标移入了");
        },
        function () {
          console.log("鼠标移出了");
        }
      );
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章           查看所有文章
加:2021-08-01 14:24:51  更:2021-08-01 14:27:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 23:02:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码