• jQuery的事件委托实例分析


    事件委托主要是利用事件冒泡现象来实现的,对于事件委托的精准的掌握,可以有利于提高代码的执行效率。先看一段代码实例:

    <!DOCTYPE html> 
    
    <html> 
    
    <head> 
    
    <meta charset="utf-8"> 
    
    <title>脚本之家</title> 
    
    <style type="text/css"> 
    
    table{ 
    
     width:300px; 
    
     height:60px; 
    
     background-color:green; 
    
    }  
    
    table td{ 
    
     background-color:white; 
    
    } 
    
    </style> 
    
    <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> 
    
    <script type="text/javascript"> 
    
    $(document).ready(function(){ 
    
     $("td").bind("click",function(){ 
    
      $(this).text("哈哈"); 
    
     }) 
    
    }) 
    
    </script> 
    
    </head> 
    
    <body> 
    
    <table cellspacing="1"> 
    
     <tr> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
     </tr> 
    
     <tr> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
     </tr> 
    
    </table> 
    
    </body> 
    
    </html>

    在以上代码中,使用bind()方法为每一个td绑定了一个click事件处理函数,这样当点击单元格的时候,就会重新设置单元格中的文本。虽然此中方式实现了需要的效果,看起来非常的完美,其实并非这样,如果当单元格非常多时候,遍历单元格和为每一个单元格绑定事件处理函数将会大大降低代码的性能,如果让单元格的父元素监听事件,只要判断最初触发事件的DOM元素是否是td即可。

    代码修改如下:

    <!DOCTYPE html> 
    
    <html> 
    
    <head> 
    
    <meta charset="utf-8"> 
    
    <title>脚本之家</title> 
    
    <style type="text/css"> 
    
    table{ 
    
     width:300px; 
    
     height:60px; 
    
     background-color:green; 
    
    }  
    
    table td{ 
    
     background-color:white; 
    
    } 
    
    </style> 
    
    <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> 
    
    <script type="text/javascript"> 
    
    $(document).ready(function(){ 
    
     $("table").bind("click",function(e){ 
    
      var target = e.target; 
    
      $target=$(target); 
    
      if ($target.is("td")){ 
    
       $target.text('哈哈'); 
    
      } 
    
     }) 
    
    }) 
    
    </script> 
    
    </head> 
    
    <body> 
    
    <table cellspacing="1"> 
    
     <tr> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
     </tr> 
    
     <tr> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
      <td>单元格</td> 
    
     </tr> 
    
    </table> 
    
    </body> 
    
    </html>

    以上代码实现了相同的功能,但是效率却大大提高了。

    总结:所谓的事件委托,就是事件目标自身不处理事件,而是把处理任务委托给其父元素或者祖先元素,甚至根元素。

  • 相关阅读:
    PHP 常用命令行
    windows环境下为php打开ssh2扩展
    mysql查看和修改注释
    PHP导出excel时数字变为科学计数的解决方法
    PHP获取上周、本周、上月、本月、本季度、上季度时间方法大全
    centos 基础修改文件权限
    使用apidocJs快速生成在线文档
    封装多线程处理大量数据操作
    android 中resources管理
    Android网格视图(GridView)
  • 原文地址:https://www.cnblogs.com/mopagunda/p/4652788.html
Copyright © 2020-2023  润新知