• 事件冒泡与捕获


    搬运自:https://www.cnblogs.com/qq9694526/p/5653728.html

    事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡是自下而上的去触发事件。

    绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。

    Jquery的e.stopPropagation会阻止冒泡,意思就是到我为止,我的爹和祖宗的事件就不要触发了。

    html:

    <div id="parent">
      <div id="child" class="child"></div>
    </div>

    1. 事件冒泡

    绑定事件:

     document.getElementById("parent").addEventListener("click",function(e){
        alert("parent事件被触发,"+this.id);
     })
     document.getElementById("child").addEventListener("click",function(e){
        alert("child事件被触发,"+this.id)
     })

    结果:

    child事件被触发,child
    parent事件被触发,parent

    结论:

    先parent,然后child。事件的触发顺序自内向外,这就是事件冒泡。

    2. 事件捕获

    现在改变第三个参数的值为true:

     document.getElementById("parent").addEventListener("click",function(e){
          alert("parent事件被触发,"+e.target.id);
      },true)
      document.getElementById("child").addEventListener("click",function(e){
          alert("child事件被触发,"+e.target.id)
      },true)

    结果:

    parent事件被触发,parent
    child事件被触发,child

    结论:

    先parent,然后child。事件触发顺序变更为自外向内,这就是事件捕获。

    3. 实践需求:鼠标放到li上对应的li背景变灰——利用事件冒泡实现

    效果:

    html:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
            <title>test</title>
            <script type="text/javascript" src="js/jquery.min.js"></script>
        </head>
        <body>
            <div>
                <ul>
                    <li>item1</li>
                    <li>item2</li>
                    <li>item3</li>
                    <li>item4</li>
                    <li>item5</li>
                    <li>item6</li>
                </ul>
            </div>
            <script>
                $("ul").on("mouseover", function(e) {
                    $(e.target).css("background-color", "#ddd").siblings().css("background-color", "#fff");//siblings(),返回被选元素的所有同级元素(共享相同父元素的元素)
    
                })
            </script>
        </body>
    </html>
  • 相关阅读:
    Python super() 函数
    Python中的多继承
    sub eax, _PAGESIZE; decrease by PAGESIZE test dword ptr [eax],eax ; probe page
    ubuntu中的samba配置
    linux 相关命令
    Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义
    结构之法,算法之道:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    C++ 构造函数和析构函数
    C++ 友元函数总结
    C++ 动态存储空间的分配和释放 new与malloc的区别
  • 原文地址:https://www.cnblogs.com/linjiangxian/p/11678396.html
Copyright © 2020-2023  润新知