zoukankan      html  css  js  c++  java
  • 事件委托

    1. 事件委托:
    * 将多个子元素(li)的事件监听委托给父辈元素(ul)处理
    * 监听回调是加在了父辈元素上
    * 当操作任何一个子元素(li)时, 事件会冒泡到父辈元素(ul)
    * 父辈元素不会直接处理事件, 而是根据event.target得到发生事件的子元素(li), 通过这个子元素调用事件回调函数
    2. 事件委托的2方:
    * 委托方: 业主 li
    * 被委托方: 中介 ul
    3. 使用事件委托的好处
    * 添加新的子元素, 自动有事件响应处理
    * 减少事件监听的数量: n==>1
    4. jQuery的事件委托API
    * 设置事件委托: $(parentSelector).delegate(childrenSelector, eventName, callback)
    * 移除事件委托: $(parentSelector).undelegate(eventName)

    需求:
    1. 点击 li 背景就会变为红色
    2. 点击 btn1 就添加一个 li

    <!DOCTYPE HTML>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>20_事件委托_引入.html</title>
    </head>
    
    <body>
    
    <ul>
      <li>11111</li>
      <li>1111111</li>
      <li>111111111</li>
      <li>11111111111</li>
    </ul>
    
    <li>22222</li>
    <br>
    <button id="btn">添加新的li</button>
    <br>
    
    <!--
    绑定事件监听的问题: 新加的元素没有监听
    -->
    <script src="../../js/jquery-1.10.1.js"></script>
    <script>
      /*
       需求:
       1. 点击 li 背景就会变为红色
       2. 点击 btn1 就添加一个 li
      */
     
     //1. 点击 li 背景就会变为红色
     $("ul").delegate('li','click',function(){
         $(this).css('background','red');
     })
     //2. 点击 btn1 就添加一个 li
     var $btn = $("#btn");
     $btn.click(function(){
         $("ul").append("<li>新增的ul</li>");
     })
    
    </script>
    </body>
    </html>
  • 相关阅读:
    unittest详解(二) 跳过用例的执行(skip)
    Selenium获取input值的两种方法:WebElement.getAttribute("value")和WebElement.getText()
    python 函数参数的传递(参数带星号的说明) 元组传递 字典传递
    获取当前运行函数名称和类方法名称
    python中datetime模块中strftime/strptime函数
    面试题
    H5测试-缓存机制
    cp命令
    Java面试
    名词解释。。
  • 原文地址:https://www.cnblogs.com/caicaihong/p/9399854.html
Copyright © 2011-2022 走看看