阻止事件冒泡和禁用默认事件

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<table border="1">

<tr>

<td><span>冒泡事件测试1</span></td>

<td><span>冒泡事件测试2</span></td>

</tr>

</table>

</body>

<a href="http://www.baidu.com">测试</a>

<script src="./js/jquery-3.4.1.min.js" type="text/javascript" charset="utf-8"></script>

<!--

1.<script src="script.js"></script>

没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。

2.<script async src="script.js"></script>

有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。

3.<script defer src="myscript.js"></script>

有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。

-->

<script type="text/javascript" charset="utf-8">

// $('table').on('click',function(e){

// alert('table alert!');

// });

// $('tr').on('click',function(e){

// alert('tr alert');

// });

//    $('span').on('click',function(e){

//    alert('span alert');

//    });

    // span alert -> td alert -> table alert。这就叫事件冒泡。就是从下到上,从里到外,事件依次触发。

    $(function(){

    return false  //return false等效于同时调用e.preventDefault()和e.stopPropagation(),从源码中可以看到该功能的实现。

$('table').on('click','span',function(e){    

//个人理解是禁止该元素的子元素到该元素的事件冒泡。

    alert('span alert');

    e.stopPropagation();

    });

    $('tr').on('click','span',function(e){

    alert('span alert');

    e.stopPropagation();

    });

    $('table').on('click',function(){

    alert('table alert!')

    });

    $('tr').on('click',function(){

    alert('table alert!')

    });

    })

    // 点击span时,弹出"span alert!"对话框即结束,然后禁止事件冒泡,“table alert!”对话框即不会触发。

    $("a").click(function (e) {

    alert("默认行为被禁止喽");

    return false

    // e.preventDefault();  //阻止默认事件,就是停止元素原本的功能

});

</script>

</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,615评论 0 7
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,061评论 0 2
  • 一:认识jquery jquery是javascript的类库,具有轻量级,完善的文档,丰富的插件支持,完善的Aj...
    xuguibin阅读 1,727评论 1 7
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,368评论 0 3
  • 本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题,并且都给出了我在网上收集的答案。马上就...
    菲菲菲菲妞阅读 955评论 0 3