• jQuery阻止事件冒泡


    jQuery 提供了两种方式来阻止事件冒泡。

    方式一: event.stopPropagation();

    $("#div1").mousedown(function(event) {
        event.stopPropagation();
    });

    方式二:return false;

    $("#div1").mousedown(function(event) {
        return false;
    });

    二者区别:
    event.stopPropagation() 则只阻止事件往上冒泡, 不阻止事件本身;
    return false 不仅阻止了事件往上冒泡, 而且阻止了事件本身。


    代码示例

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="./jquery-3.2.1.min.js"></script>
        <script src="./script.js"></script>
    </head>
    
    <body>
        <div id="dTest">
            <a id="aTest" href="http://www.baidu.com/">百度</a>
        </div>
    </body>
    
    </html>

    情形1:JS代码

    $(document).ready(function() {
        $('#aTest').on('click', function(evt) {
            alert('abc-By-a')
        })
        $('#dTest').on('click', function() {
            alert('abc-By-div');
        })
    })

    分析:当点击“百度”时,会先后弹出’abc-By-a’及’abc-By-div’两个对话框,然后会跳转到百度;

    情形2:JS代码
    调用事件对象的 .preventDefault() 方法可以阻止事件的默认行为:

    $(document).ready(function() {
        $('#aTest').on('click', function(evt) {
            alert('abc-By-a')
            evt.preventDefault();
        })
        $('#dTest').on('click', function() {
            alert('abc-By-div');
        })
    })

    分析:当点击“百度”时,会先后弹出’abc-By-a’及’abc-By-div’两个对话框,然后不会跳转到百度;(因为a标签的默认行为被阻止了)
    【jQuery 还有另外一个方法 .stopImmediatePropagation() 调用后事件冒泡被阻止同时该元素上后面绑定的事件处理程序也不会执行了】

    情形3:JS代码
    调用事件对象的 .stopPropagation() 方法可以阻止事件冒泡:

    $(document).ready(function() {
        $('#aTest').on('click', function(evt) {
            alert('abc-By-a')
            evt.stopPropagation();
        })
        $('#dTest').on('click', function() {
            alert('abc-By-div');
        })
    })

    分析:当点击“百度”时,会先后弹出’abc-By-a’一个对话框,然后会跳转到百度;(因为a标签冒泡被阻止了)

    情形4:JS代码
    在事件处理程序中直接返回 false 可以同时取消冒泡和阻止默认行为:

    $(document).ready(function() {
        $('#aTest').on('click', function(evt) {
            alert('abc-By-a')
            return false;
        })
        $('#dTest').on('click', function() {
            alert('abc-By-div');
        })
    })

    分析:当点击“百度”时,会弹出’abc-By-a’一个对话框,不会弹出’abc-By-div’对话框,也不会跳转到百度;(因为a标签的默认行为被阻止了,因为a标签冒泡也被阻止了)

  • 相关阅读:
    ORACLE B-TREE(B树)索引
    安装CentOS 6.4 64 位操作系统
    环境搭建(一)——linux 安装tomcat
    Linux基础
    sql必知必会
    Mysql基础
    shell编程基础
    Allpairs 正交分析工具的使用(测试用例设计)
    Sublime Text3配置SublimeREPL快捷键的方法(Python)
    XSS攻击及预防
  • 原文地址:https://www.cnblogs.com/wood2012/p/7896568.html
Copyright © 2020-2023  润新知