jQuery中的事件

目录

一、事件类型

1.鼠标事件

2.键盘事件

3.表单事件

二、事件处理

1.事件对象

鼠标事件对象

键盘事件对象

2.捕获事件流与冒泡事件流

捕获事件流

冒泡事件流

阻断事件流的传播

3.事件绑定

绑定事件

取消绑定

4.事件委派

委派事件

取消委派

5.事件切换


一、事件类型

1.鼠标事件

方法功能
click鼠标点击某个对象时触发事件
dblclick鼠标双击某个对象时触发事件
mouseover鼠标被移到某元素之上或者穿过其子元素时触发事件
mouseout鼠标从某元素移开或者穿过其子元素时触发事件
mouseenter鼠标被移到某元素之上时触发事件,穿过其子元素时不会再次触发事件
mouseleave鼠标从某元素移开时触发事件,穿过其子元素时不会再次触发事件
mousemove鼠标移动时触发事件
mousedown某个鼠标按键按下时触发事件
mouseup某个鼠标按键松开时触发事件

示例:

<!DOCTYPE html>
 <html lang="en">
 ​
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <script src='https://code.jquery.com/jquery-3.6.0.min.js'></script>
     <style>
         section {
             width: 500px;
             height: 500px;
             background-color: red;
         }
 ​
         main {
             width: 200px;
             height: 200px;
             background-color: aqua;
         }
     </style>
 </head>
 ​
 <body>
     <section>
         <main>
 ​
         </main>
     </section>
 </body>
 ​
 <script>
     //在section上点击时触发
     $('section').click(function () {
         console.log('click点击事件')
     })
     
     //在section上双击时触发
     $('section').dblclick(function () {
         console.log('dblclick双击事件')
     })
 ​
     // 进入section会触发 进入main时也会触发
     $('section').mouseover(function () {
         console.log('mouseover鼠标移入事件')
     })
 ​
     // 离开section会触发 从section进入main时也会触发
     $('section').mouseout(function () {
         console.log('mouseout鼠标移出事件')
     })
 ​
     // 进入section会触发 进入main时则不会触发
     $('section').mouseenter(function () {
         console.log('mouseenter鼠标移入事件')
     })
 ​
     // 离开section会触发 从section进入main时则不会触发
     $('section').mouseleave(function () {
         console.log('mouseleave鼠标移出事件')
     })
 ​
     // 鼠标在section上移动就会触发
     $("section").mousemove(function () {
         console.log('mousemove鼠标移动事件')
     })
 ​
     // 鼠标在section上按下时触发
     $('section').mousedown(function () {
         console.log('mousedown鼠标按下事件')
     })
 ​
     // 鼠标在section上松开时触发
     $('section').mouseup(function () {
         console.log('mouseup鼠标松开事件')
     })
 </script>
 ​
 </html>

2.键盘事件

方法功能
keydown键盘的某个键被按下或按住时触发事件
keyup键盘的某个键被松开时触发事件

示例:

 // 任意键盘按下触发
 $(document).keydown(function(){
     console.log("键盘按下了")
 })
 ​
 // 任意键盘松开触发
 $(document).keyup(function(){
     console.log("键盘松开了")
 })

3.表单事件

方法功能
focus当元素获得焦点时触发事件
blur当元素失去焦点时触发事件
submit当点击提交按钮时触发事件
select当文本内容被选中时触发事件
change当用户改变表单元素的内容时触发事件

示例:

//.ipt选中的是一个input文本输入框
 // 元素获得焦点时触发事件 也就是用户点击输入框输入时
 $('.ipt').focus(function(){
     console.log("获得焦点")
 })
 ​
 // 元素失去焦点时触发事件
 $('.ipt').blur(function(){
     console.log('失去焦点')
 })
 ​
 // 点击提交按钮时触发事件
 $('form').submit(function(){
     console.log('提交内容')
 })
 ​
 // 文本内容被选中时触发事件
 $('.ipt').select(function(){
     console.log('文本内容被选中')
 })
 ​
 // 输入框的内容发生了修改,并且 回车或者失去焦点 后触发事件
 $('.ipt').change(function(){
     console.log('内容发生了改变')
 })

二、事件处理

1.事件对象

鼠标事件对象

 // 鼠标事件对象
 $('main').click(function (event) {
     console.log(event)
 })

键盘事件对象

 // 键盘事件对象
 $(document).keydown(function (event) {
     console.log(event)
 })

2.捕获事件流与冒泡事件流

        当一个HTML元素产生一个事件的时候,事件会在元素节点之间按照特定的顺序传播,这个传播过程称为DOM事件流。DOM事件流分为捕获事件流和冒泡事件流。捕获事件流指的是当某HTML元素产生一个事件时从根元素向该元素执行事件流,也就是从“它备份最大的祖先”到它依次发生一次该事件。冒泡事件流的顺序正好与捕获事件流的顺序相反。

捕获事件流

 //点击了d3之后,从外到内依次触发d1 d2 d3的点击函数。d2同理
 var d1 = document.querySelector(".d1")
 var d2 = document.querySelector('.d2')
 var d3 = document.querySelector(".d3")
 ​
 //addEventListener()方法的第三个参数为true代表为捕获传播,为空或false代表为冒泡传播
 d1.addEventListener(
     'click',
     function (e) {
         console.log("点击d1了")
     },
     true
 )
 ​
 d2.addEventListener(
     'click',
     function (e) {
         console.log("点击d2了")
     },
     true
 )
 ​
 d3.addEventListener(
     'click',
     function (e) {
         console.log("点击d3了")
     },
     true
 )

冒泡事件流

// 点击了d3之后,从内到外依次触发d3 d2 d1的点击函数。d2同理
 $(".d1").click(function (e) {
     console.log("d1被点击了")
 })
 ​
 $(".d2").click(function () {
     console.log("d2被点击了")
 })
 ​
 $(".d3").click(function () {
     console.log("d3被点击了")
 })

阻断事件流的传播

        有时候我们可能不太需要事件流,这时我们就可以通过一些方法来阻断事件流的传播,下面以在第二个div元素处阻断事件流的传播为例介绍两种阻断方法。

 // return false 阻断
 $(".d2").click(function () {
     console.log("d2被点击了")
     return false
 })
 ​
 //e.stopPropagation() 阻断
 d2.addEventListener(
     'click',
     function (e) {
         console.log("点击d2了")
         e.stopPropagation()
     },
     true
 )

3.事件绑定

绑定事件

        事件绑定可以将事件与函数绑定在一起,当触发此事件时就执行该函数。事件绑定比较自由,可以一对一绑定和多对一绑定。

 // 绑定单个事件
 $('div').on('click', function () {
     console.log('绑定单个事件')
 })
 // 绑定多个事件
 $('div').on('mouseover mouseout', function () {
     console.log('绑定多个事件')
 })
 ​
 // 一次绑定多个事件,但是不同事件不同操作
 $('div').on({
     'mouseenter': function () {
         $(this).css("background", 'red')
     },
     "mouseleave": function () {
         $(this).css("background", "green");
     },
     "click": function () {
         $(this).css("background", "blue");
     }
 })

取消绑定

 // 取消指定事件
 $('div').off('mouseenter mouseleave')
 // 取消全部绑定事件
 $('div').off()

4.事件委派

委派事件

        我们可以通过事件委派父元素的事件委派给其子元素,这样就相当于其子元素也有了该事件。这样我们就可以只给上级元素添加事件,而不需要给每个子元素添加事件,从而提高了程序的性能。

// 事件委派
 $('div').on('click', $('section'), function () {
     console.log('div被点击')
 })

取消委派

 // 取消委派
 $('div').off('click')

5.事件切换

        hover()函数定义了鼠标移入和移出时要执行的函数,其第一个参数时鼠标移入时需要执行的函数,第二个参数是鼠标移出时需要执行的函数。当只有一个参数时,鼠标移入和移出都执行这个函数。

 $('main').hover(
     function(){
         $(this).css('background','red')
     },
     function(){
         $(this).css('background','green')
     }
 )

文中若有不当之处,欢迎各位朋友批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可乐喽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值