26-事件委托

事件的委托

事件的对象
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>事件的对象</title>
     <style>
         #box{
             width:900px;
             height:400px;
             background:silver;
         }
         ul{
             background:#999999;
             width:400px;
         }
         li{
             width:300px;
             height:30px;
             margin-bottom:10px;
             background:pink;
             line-height:30px;
             list-style:none;
         }
     </style>
 </head>
 <body>
    <div id ='box'>
    <button>点击</button>
        <ul>
            <li>第一个</li>
            <li>第二个</li>
            <li>第三个</li>
            <li>第四个</li>
        </ul>
     </div>
     <script>
        /*
            事件有 :单击事件,鼠标事件,键盘事件等
                      click、 mousemove、keydown 等
            事件对象
         *  - 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,
         *    在事件对象中封装了当前事件相关的一切信息,
              比如:鼠标的坐标  键盘哪个按键被按下  鼠标滚轮滚动的方向。。。     
        */
        //给按钮绑定点击事件
        var btn = document.querySelector('button');
        btn.onclick = function(event){
            // 参数event包括了这个事件相关的一切信息
            console.log(event); 
            //打印结果看   图一
        }
         /*
        btn.addEventListener('click',function(event){       
            console.log(event)
        })
        */
     </script>
 </body>
</html>

事件委托1.jpg

事件的委托

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>事件委托</title>
     <style>
         #box{
             width:900px;
             height:400px;
             background:silver;
         }
         ul{
             background:#999999;
             width:400px;
         }
         li{
             width:300px;
             height:30px;
             margin-bottom:10px;
             background:pink;
             line-height:30px;
             list-style:none;
         }
     </style>
 </head>
 <body>
    <div id ='box'>
    <button>点击</button>
        <ul>
            <li>第一个</li>
            <li>第二个</li>
            <li>第三个</li>
            <li>第四个</li>
        </ul>
     </div>
     <script>
        /*
            事件托管
            因为事件冒泡的存在,所以可以通过 给需要绑定事件的元素 的父元素绑定事件,这就是事件委托
            比喻 ul下有四个li,我需要给每个li绑定单击事件,有两个方法,
            方法一: 通过遍历,给每个li绑定单击事件。
            方法二: 通过事件委托 ,给li的父元素 ul 绑定单击事件
        */
         //获取ul
        var ul =  document.querySelector('ul');
        //给ul绑定单击事件
        ul.onclick = function(event){
            /* event.target 
               指的是你点击的元素 ,比如你点击第一个 li ,event.target 指的就是第一个li ,
               点击第二个li ,event.target就是指第二个li
               
                event.target.localName
                指的是你点的元素的标签名,你点击的是li,event.target.localName 就是li,
                你点击的是ul,event.target.localName 就是ul
            */
            console.log(event.target)
             /* event.currentTarget 
               指的是你绑定事件的元素,这里绑定元素的事件ul,这个event.currentTarget 
               指的就是 ul
             */
            console.log(event.currentTarget)
            
        }
         /*
            自定义属性
            自定义一个属性来存储数据
            <li data = 'xxx'></li>
         */
         var arr=[001,002,003,004,005,006]
         for(var i = 0 ; i<arr.length;i++){
             ul.innerHTML += `<li data=${arr[i]}>第${i+5}</li>`
  
         }
        
       
     </script>
 </body>
</html>
事件委托2.jpg
事件委托3.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容