jQuery[补1] - 事件冒泡和阻止冒泡

假设网页上有两个元素,其中一个元素嵌套在另一个元素中,并且都被绑定了 click 事件,同时 body 元素上也绑定了 click 事件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div id="content">
    外层 div 元素
    <span>内层 span 元素</span>
    外层 div 元素
</div>
<div id="msg"></div>
<script src="../../vender/jquery-1.11.3/jquery-1.11.3.js"></script>
<script type="text/javascript">
    $(function () {
        $(‘span‘).click(function (e) {
            var txt = $(‘#msg‘).html()+"<p>内层 span 元素被单击</p>";
            $(‘#msg‘).html(txt);
        });
        $(‘div‘).click(function () {
            var txt = $(‘#msg‘).html()+"<p>外层 div 元素被单击</p>";
            $(‘#msg‘).html(txt);
        });
        $(‘body‘).click(function () {
            var txt = $(‘#msg‘).html()+"<p>body 元素被单击</p>";
            $(‘#msg‘).html(txt);
        })
    })
</script>
</body>
</html>

当单击内部 span 元素,会输出三条记录:

该现象就是由事件冒泡引起的。

元素的 click 事件会按照以下顺序冒泡:

  • span
  • div
  • body

其顺序与事件捕获相反。

停止事件冒泡可以阻止事件中其他对象的事件处理函数被执行,在 jQuery 中提供stopPropagation()方法来停止冒泡。

$(‘span‘).click(function (e) {
            var txt = $(‘#msg‘).html()+"<p>内层 span 元素被单击</p>";
            $(‘#msg‘).html(txt);
            e.stopPropagation();
        });

时间: 2024-10-13 06:16:23

jQuery[补1] - 事件冒泡和阻止冒泡的相关文章

jQuery中事件对象e的事件冒泡用法示例(事件冒泡与阻止冒泡)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>事件冒泡与阻止冒泡</title> <script src="js/jquery.min.js" type="text/javascript"></script></head><b

事件委托与阻止冒泡

简单说下事件委托与阻止冒泡 html: <ul class="clearfix" data-type="cityPick"> <li class="active_sort_opts" data-id="0">全部</li> <li data-id="88">纽约</li> <li data-id="119">洛杉矶&

js中事件冒泡及阻止冒泡的一小段code

在有些情况下, 事件冒泡会给我们的应用程序带来负面的影响. 比如下面的例子(有些极端): <html> <head> <title></title> <script> window.onload = function(){ var all = document.getElementsByTagName('*'); for(var i = 0; i < all.length; i++){ console.log('xxx'); all[i].

div嵌套点击事件问题解决方法-阻止冒泡事件

<html> <body> <li onclick="javascript:alert(1);">11111 <li onclick="javascript:alert(2);">  22222 <li id="li3" onclick="javascript:alert(3);">    33333 </li> </li> </li&g

js阻止冒泡及jquery阻止事件冒泡示例介绍

js阻止冒泡 在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容. 复制代码 代码如下: function stopPro(evt){ var e = evt || window.event; //returnValue如果设置了该属性,它的值比事件句柄的返回值优先级高.把这个属性设置为 fasle, //可以取消发生事件的源元素的默认动作. //window.event?e.returnValue = false:e.preventDefault(); window.ev

Vue小基础鼠标点击和阻止冒泡

1.once修饰符的使用(once修饰符是让点击事件只能够执行一次). 2,阻止冒泡事件,使用JS阻止和Vue修饰符stop阻止 <div id="app"> <p>{{ age }}</p> <!-- 使用Vue的once修饰符,让点击事件只能使用一次 --> <button @click.once='btn'>只能点击一次</button> <button @click='btn2(10)'>加10

JQuery笔记总结------事件细节、JQ进阶常用方法

引入jQuery: <script src="./K1/Tool/jquery-3.1.1/jquery-3.1.1.min.js"></script> 引入CSS: <link rel="shortcut icon" type="image/x-icon" href="./images/icon.ico"> <link rel="stylesheet" type=

jQuery方法之事件细节

ev : event对象 ev.pageX(相对于文档的) : clientX(相对于可视区) ev.which : keyCode ev.preventDefault(); //阻止默认事件 ev.stopPropagation(); //阻止冒泡的操作 return false; //阻止默认事件 + 阻止冒泡的操作   <script> $(function(){ $('div').one('click',function(){ //只执行事件一次 alert(123); }); });

jQuery -- 选择器和事件

第一部分: 选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择器</title> <script src="jquery-2.2.3.min.js"></script> <script src="Selector.js">