jQuery 事件绑定

简介: jQuery 事件绑定

我们已经掌握了基本的绑定事件的方式,例如给 div 绑定一个点击事件:$('div').click(function(){}) 即可,那为什么还要专门学习这篇文章呢?如果我要求你给一个 div 分别绑定点击,移上,移开三个事件,那么根据以前的做法我们就会给它依次绑定三次不同的事件,很繁琐,代码冗余很严重,这就需要这篇文章来帮你将解决这个问题 ------ on() 绑定 与 off() 解绑




文章目标:

📑 掌握利用 on 给元素绑定多个事件

📑 掌握利用 on 给元素绑定事件委派

📑 掌握利用 on给动态创建的元素绑定事件

📑 掌握利用 off 解绑事件

📑 掌握利用 one 绑定单次触发事件

文章目录:

📊 一:利用 on 绑定事件


1.1 利用 on 绑定多个事件(不同事件处理程序)


1.2 利用 on 绑定多个事件(相同事件处理程序)


1.3 利用 on 事件委派


1.4 利用 on 给动态创建的元素绑定事件


📊  二:利用 off 解绑事件


2.1 解绑所有事件


2.2 解绑指定事件


2.3 解绑事件委派


📊 三:绑定单次触发事件


📊 四:自动触发事件


4.1 $('ele').事件


4.2 $('ele').trigger(事件)


4.3 $('ele').triggerHandler(事件)


📊 五:事件对象


一:利用 on 绑定事件

 🧽 本版块带大家掌握 利用 on 绑定多个事件(不同事件处理程序),利用 on 绑定多个事件(相同事件处理程序),利用 on 事件委派,利用 on 给动态创建的元素绑定事件


📮 1.1 利用 on 绑定多个事件(不同事件处理程序)

📕 给元素绑定多个事件,不同事件处理程序的格式:以对象形式写入


$('div').on({

                   click:function(){},

                   mouseover:function(){},

                   mouseout:function(){}

             })

案例:我们给一个 div 分别绑定三个事件,不同的事件处理程序:


     <div></div>

     <script>

             $('div').on({

                   click:function(){

                         console.log('点击事件触发了');

                   },

                   mouseover:function(){

                         console.log('鼠标移上去了');

                   },

                   mouseout:function(){

                         console.log('鼠标移开了');

                   }

             })

     </script>



📮 1.2 利用 on 绑定多个事件(相同事件处理程序)

📕 给元素绑定多个事件,相同事件处理程序的格式:空格隔开


$('div').on('mouseover mouseout',function(){})

案例:我们给 div 绑定多个事件,相同的事件处理程序:


     <div></div>

     <script>

           $('div').on('mouseover mouseout',function(){

                 $(this).toggleClass('current')

           })

     </script>



📮 1.3 利用 on 事件委派

💹 所谓事件委派就是利用冒泡来通过父节点来影响子节点,例如我们有一个 ul 里面有 多个 li,我们要点击每个 li 都能执行事件,按照原来的思想我们会给每个 li 绑定一个点击事件,这样就需要多次绑定事件,太繁琐了,我们利用事件委派,只给 ul 绑定事件即可,点击 li 后,冒泡到 ul 身上,ul 绑定了事件,就会执行,这就是事件委派


📕 事件委派格式:括号内第二个位置写触发的元素


$('ul').on('click','li',function(){})

案例:给一个 ul 绑定事件委派,点击每个 li 都输出 ‘我被打印了’


     <ul>

           <li>我是第一个li</li>

           <li>我是第二个li</li>

           <li>我是第三个li</li>

     </ul>

     <script>

           $('ul').on('click','li',function(){

                 console.log('我被打印了');

           })

     </script>



📮 1.4 利用 on 给动态创建的元素绑定事件

📁 按照之前的绑定点击事件,如果我们先绑定了事件,再动态创建,那事件将不能被触发。但如果使用 on 绑定,则可以解决这一问题,on 可以给动态创建的元素绑定事件


给动态创建的 li 绑定点击事件:


     <ul></ul>

     <script>

           $('ul').on('click','li',function(){

                 console.log('新创建的 li 被触发了');

           })

           var lis=$('<li>新创建的 li</li>')

           $('ul').append(lis)

     </script>



二:利用 off 解绑事件

🧺 利用 off 解绑比较简单,只有三种情况,解绑所有事件 和 解绑某个事件,还有解绑事件委派




📮 2.1 解绑所有事件

🧼 解绑所有事件只需要不写参数即可,就可以将某元素绑定过的所有事件都给取消掉


📕  解绑所有事件的格式:无参数即可


$('div').off()

案例:给 div 解绑所有事件


     <div></div>

     <script>

             $('div').on({

                   click:function(){

                         console.log('点击事件触发了');

                   },

                   mouseover:function(){

                         console.log('鼠标移上去了');

                   },

                   mouseout:function(){

                         console.log('鼠标移走了');

                   }

             })

             $('div').off()

     </script>


📮 2.2 解绑指定事件


🧼 解绑指定事件只需要将参数写为某个事件,就可以指定解绑哪个事件了


📕  解绑所有事件的格式:参数为某个事件


$('div').off(‘click’)

案例:给 div 解绑点击事件


     <div></div>

     <script>

             $('div').on({

                   click:function(){

                         console.log('点击事件触发了');

                   },

                   mouseover:function(){

                         console.log('鼠标移上去了');

                   },

                   mouseout:function(){

                         console.log('鼠标移走了');

                   }

             })

             $('div').off('click')

     </script>


📮 2.3 解绑事件委派

🧼 解绑事件委派和绑定事件委派的格式相似


📕  解绑事件委派的格式:第二个位置写会触发事件的元素


$('ul').off(‘click’,‘li’)

案例:给 ul 的 li 解绑点击事件


     <ul>

           <li>111</li>

           <li>222</li>

           <li>333</li>

     </ul>

     <script>

           $('ul').on('click','li',function(){

                 console.log('我被触发了');

           })

           $('ul').off('click','li')

     </script>

三:绑定单次触发事件

🧬 单次触发事件就是触发过一次就不能再触发的事件


📕  单次触发事件格式:


$('div').one('click',function(){})

案例:给 div 绑定单次触发事件


     <div></div>

     <script>

             $('div').one('click',function(){

                   console.log('我触发啦');

             })

     </script>

四:自动触发事件

🧼 自动触发事件有三种形式,大范围内分两大类:会触发默认行为与不会触发默认行为





4.1 $('ele').事件

🧼 $('ele').事件 这种自动触发事件会触发元素的默认行为,例如文本框标签,默认行为是获得焦点后光标闪烁


      <input type="text">

      <script>

             $('input').focus();

      </script>

刷新页面就触发了获得焦点事件,并且触发了元素默认行为 光标闪烁




4.2 $('ele').trigger(事件)

🧼 $('ele').trigger(事件) 也会触发元素默认行为


      <input type="text">

      <script>

             $('input').trigger('focus');

      </script>

刷新页面就触发了获得焦点事件,并且触发了元素默认行为 光标闪烁




4.3 $('ele').triggerHandler(事件)

🧼 $('ele').triggerHandler(事件) 不会触发元素默认行为,为了方便看清楚没有触发默认行为但是获得了焦点,我们在自动触发后更改表单value值,如果此时还没有光标这说明触发了事件但是没有触发默认行为


      <input type="text">

      <script>

             $('input').triggerHandler('focus');

             $('input').val('111')

      </script>

看得到value改了但是没有光标,证明了该方法自动触发了事件但是没有触发元素默认行为




五:事件对象

事件对象在 jQuery 中的用法和在 原生js 中类似,均用 event 或 e 来表示,其方法也和原生中一模一样,例如 获得光标位置 e.pageX,e.pageY ,还有阻止冒泡与阻止默认行为等等,下面举例阻止冒泡为例:


我们知道 DOM 事件流会自动冒泡,点击了低级事件,会依次向上冒泡触发对应事件。



🧼 不阻止冒泡的情况:

     document

      <div class="father">father

               <div class="son">son</div>

      </div>

      <script>

            $(document).on('click',function(){

                 console.log('document冒泡了');

            })

              $('.father').on('click',function(){

                    console.log('father冒泡了');

              })

              $('.son').on('click',function(){

                    console.log('son冒泡了');

              })

      </script>


在不阻止冒泡的情况下,由于会自发向上级冒泡,而上级又有点击事件,所以会层层触发




🧼 阻止冒泡的情况:

     document

      <div class="father">father

               <div class="son">son</div>

      </div>

      <script>

            $(document).on('click',function(){

                 console.log('document冒泡了');

            })

              $('.father').on('click',function(){

                    console.log('father冒泡了');

              })

              $('.son').on('click',function(event){

                    event.stopPropagation();

                    console.log('son冒泡了');

              })


阻止冒泡的情况下点击son黄色盒子,只会触发其son事件,但是由于father没有阻止冒泡,点击father盒子还是会向上冒泡


相关文章
|
6月前
|
JavaScript 前端开发
jQuery中绑定事件的方式
jQuery中绑定事件的方式
122 1
N..
|
7月前
|
JavaScript 前端开发
jQuery事件处理
jQuery事件处理
N..
83 1
|
6月前
|
JavaScript 前端开发
jQuery中绑定事件的方式有几种
jQuery中绑定事件的方式有几种
53 1
|
7月前
|
JavaScript
|
JavaScript
JQuery——事件处理
JQuery——事件处理
67 0
|
JavaScript
jQuery绑定事件
jQuery绑定事件
|
JavaScript API
Jquery绑定事件的方法
Jquery绑定事件的方法
|
JavaScript
jquery事件对象-48
jquery事件对象-48
87 0
jquery事件对象-48
|
JavaScript 开发者
jQuery_事件对象 | 学习笔记
快速学习jQuery_事件对象
305 0
jQuery_事件对象 | 学习笔记
|
JavaScript
jquery事件处理-44
jquery事件处理-44
94 0

热门文章

最新文章