zoukankan      html  css  js  c++  java
  • js进阶---12-12、jquery事件委托怎么使用

    js进阶---12-12、jquery事件委托怎么使用

    一、总结

    一句话总结:通过on方法(事件委托),给要绑定事件的元素的祖先绑定事件,从而达到效果。

    1、事件委托是什么?

    通过事件冒泡,让子元素绑定的事件冒泡到父元素(或祖先元素)上,然后再进行处理。

     91       //使用事件委托,只在table上绑定一次事件
     92       //可以动态绑定事件
     93       $('table').on('click','td',function(){
     94             //$(this).css('background','orange')
     95             alert('click_td')
     96       })

    2、事件委托的优势是什么?

    给动态元素添加事件
    事件只绑定一次,效率高(对于同类大量元素需要绑定,效率非常高,比如一个表格2500td,要给每个td绑定事件)

     91       //使用事件委托,只在table上绑定一次事件
     92       //可以动态绑定事件
     93       $('table').on('click','td',function(){
     94             //$(this).css('background','orange')
     95             alert('click_td')
     96       })

    3、事件委托的监听对象是谁(事件委托的对象是谁)?

    要执行事件他祖先,比如要给大量td绑定事件,事件委托的对象就是它爷爷,也就是table表

     91       //使用事件委托,只在table上绑定一次事件
     92       //可以动态绑定事件
     93       $('table').on('click','td',function(){
     94             //$(this).css('background','orange')
     95             alert('click_td')
     96       })

    4、代码添加的元素和动态添加的元素的区别?

    代码生成元素的添加事件的代码要在代码生成之后,这样他是可以绑定事件的

     73       //如果不是动态创建的,可以直接绑定事件
     74       $('<div></div>').appendTo($('body'))
     75       $('<div></div>').appendTo($('body'))
     76       $('<div></div>').appendTo($('body'))
     77       $('div').on('click',function(){
     78             $(this).css('background','orange')
     79        })

    5、事件委托的使用场景是什么?

    一个表格里面有很多td,要给td绑定事件,如果使用给每个td绑定事件的方法,效率非常低,并且容易出错,使用事件委托的话就特别方便了,一步到位。

     91       //使用事件委托,只在table上绑定一次事件
     92       //可以动态绑定事件
     93       $('table').on('click','td',function(){
     94             //$(this).css('background','orange')
     95             alert('click_td')
     96       })

    6、如何动态给表格添加行列?

    html代码+append方法

     87       $('#btn1').click(function(){
     88           $('<tr><td></td><td></td><td></td><td></td><td></td></tr>').appendTo('table')
     89       })

    二、jquery事件委托怎么使用

    1、相关知识

    事件委托

    通过事件冒泡,让子元素绑定的事件冒泡到父元素(或祖先元素)上,然后再进行处理。

     

    2、代码

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <style>
      4 </style>
      5 <head>
      6     <meta charset="UTF-8">
      7     <title>演示文档</title>
      8     <script type="text/javascript" src="jquery-3.1.1.min.js"></script>
      9     <style type="text/css">
     10         input{width: 100px;height: 30px;}
     11         div{width: 50px;height: 50px;border:1px solid green;display: inline-block;margin-left: 15px}
     12         td{width: 50px;height: 20px;background: #ccc}
     13       </style>
     14 </style>
     15 </head>
     16 <body>
     17 <h3>jQuery事件对象</h3>
     18 <input id="btn1" type="button" value="事件绑定"><br>
     19 <div></div>
     20 <table>
     21     <tr>
     22         <td></td>
     23         <td></td>
     24         <td></td>
     25         <td></td>
     26         <td></td>
     27     </tr>
     28     <tr>
     29         <td></td>
     30         <td></td>
     31         <td></td>
     32         <td></td>
     33         <td></td>
     34     </tr>
     35     <tr>
     36         <td></td>
     37         <td></td>
     38         <td></td>
     39         <td></td>
     40         <td></td>
     41     </tr>
     42     <tr>
     43         <td></td>
     44         <td></td>
     45         <td></td>
     46         <td></td>
     47         <td></td>
     48     </tr>
     49     <tr>
     50         <td></td>
     51         <td></td>
     52         <td></td>
     53         <td></td>
     54         <td></td>
     55     </tr>
     56 </table>
     57 <script type="text/javascript">
     58     $(function(){
     59         /*
     60     //使用事件委托动态绑定事件
     61       $('#btn1').on('click',function(){
     62          $("<div></div>").appendTo($('body'))
     63       })
     64       // $('div').on('click',function(){
     65       //     $(this).css('background','orange')
     66       // })
     67       $(document).on('click','div',function(){
     68           $(this).css('background','orange')
     69       })
     70       //移出事件委托
     71       $(document).off('click','div')
     72       
     73       //如果不是动态创建的,可以直接绑定事件
     74       $('<div></div>').appendTo($('body'))
     75       $('<div></div>').appendTo($('body'))
     76       $('<div></div>').appendTo($('body'))
     77       $('div').on('click',function(){
     78             $(this).css('background','orange')
     79        })
     80       
     81       //每一个td绑定一个事件
     82       //不能动态的添加事件,效率低
     83       $('td').on('click',function(){
     84           alert('click_td')
     85       })
     86       */ 
     87       $('#btn1').click(function(){
     88           $('<tr><td></td><td></td><td></td><td></td><td></td></tr>').appendTo('table')
     89       })
     90 
     91       //使用事件委托,只在table上绑定一次事件
     92       //可以动态绑定事件
     93       $('table').on('click','td',function(){
     94             //$(this).css('background','orange')
     95             alert('click_td')
     96       })
     97 
     98     })
     99 </script>
    100 </body>
    101 </html>
     

    给动态元素添加事件
    事件只绑定一次,效率高

  • 相关阅读:
    SequoiaDB数据库集群部署
    初步了解SequoiaDB数据库
    SequoiaDB数据库的一般概念介绍
    SequoiaDB(巨杉数据库)(社区版)安装配置使用图解
    记录用Django搭建博客的问题之一:SITE_ID=1
    解决问题七步法
    python的浅拷贝和深copy
    Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中 (转)
    用PYTHON监听鼠标和键盘事件(转)
    转:python中range和xrange的区别
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9282354.html
Copyright © 2011-2022 走看看