`
liuxiang123
  • 浏览: 30485 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

js 事件冒泡解决方案

阅读更多

什么是JS事件冒泡?:
在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。 (摘自网络)

如何来阻止Jquery事件冒泡?

通过一个小例子来解释

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Porschev---Jquery 事件冒泡</title>

    <script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>
    
</head>
<body>
    <form id="form1" runat="server">
    <div id="divOne" onclick="alert('我是最外层');">
         <div id="divTwo" onclick="alert('我是中间层!')">
             <a id="hr_three" href="http://www.baidu.com" mce_href="http://www.baidu.com" onclick="alert('我是最里层!')">点击我</a>
         </div>
    </div>
    </form>
</body>
</html>

 

 

比如上面这个页面,

分为三层:divOne是第外层,divTwo中间层,hr_three是最里层;

他们都有各自的click事件,最里层a标签还有href属性。


运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层

---->然后再链接到百度.

 

这就是事件冒泡,本来我只点击ID为hr_three的标签,但是确执行了三个alert操作

事件冒泡过程(以标签ID表示):hr_three----> divTwo----> divOne 。从最里层冒泡到最外层。


如何来阻止?


1.event.stopPropagation(); 

<script type="text/javascript">

        $(function() {
            $("#hr_three").click(function(event) {
                event.stopPropagation();
            });
        });
        
 
<script>

 

再点击“点击我”,会弹出:我是最里层,然后链接到百度

 

 

 2.return false;

 <script type="text/javascript">

        $(function() {
            $("#hr_three").click(function(event) {
                  return false;
            });
        });

 <script>

 

如果头部加入的是以下代码

再点击“点击我”,会弹出:我是最里层,但不会执行链接到百度页面

 

 

由此可以看出:

1.event.stopPropagation(); 

   事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(它就执行了超链接的跳转)

 

 

2.return false;

   事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如刚才它就没有执行超链接的跳转)

 

 

还有一种有冒泡有关的:

3.event.preventDefault(); 

   如果把它放在头部A标签的click事件中,点击“点击我”。

   会发现它依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度

 

    它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)



友情提示:事件冒泡不一定是个坏的东西,有些情况会让不同层次捕获不同的事件!

 

 

分享到:
评论

相关推荐

    事件冒泡解决方案

    标题中的"事件冒泡解决方案"指的是如何在HTML结构中处理这种事件冒泡,确保点击内部的div不会触发外部div的事件。在描述中,提到的是一个简单的案例:两个相互嵌套的div,两者都绑定了click事件。当点击内部div时,...

    js下关于onmouseout、事件冒泡的问题经验小结.docx

    另一种解决方案是利用 `onmousemove` 事件的优先级来阻止在子元素中触发 `onmouseout` 事件。 ```html ('div2').style.display='block';"&gt;触发显示浮动层 ;" onmouseout="this.style.display='none';"&gt; &lt;li&gt;1 ...

    js如何取消事件冒泡

    2. **`window.event.cancelBubble = true`**:这是针对IE浏览器的解决方案。在IE中,`event`对象不是默认传递给事件处理函数的,因此需要通过`window.event`来访问。设置`cancelBubble`属性为`true`可以阻止事件冒泡...

    javascript mouseover、mouseout停止事件冒泡的解决方案

    在JavaScript中,`mouseover` 和 `mouseout` 是两个常见的鼠标事件,它们分别在鼠标进入和离开元素时触发。然而,在处理这些事件时,一个...注意,此解决方案依赖于DOM2级事件模型,确保在支持此模型的浏览器中使用。

    Javascript 阻止javascript事件冒泡,获取控件ID值

    在JavaScript编程中,事件处理是页面交互的核心部分。事件冒泡和获取控件ID值是JavaScript事件处理中的两个重要概念,对于理解...在编写JavaScript代码时,应考虑兼容性问题,为不同的浏览器环境提供适当的解决方案。

    在点击div中的p时,如何阻止事件冒泡

    正确的解决方案是将阻止事件冒泡的代码独立出来,作为一个单独的函数`cancelBubble(e)`,并在`show(info)`函数中调用它。 下面是改进后的代码示例: ```javascript function show(info) { alert(info); ...

    JavaScript_Leetcode解决方案.zip

    "JavaScript_Leetcode解决方案.zip"这个压缩包显然是为JavaScript开发者准备的,包含了解决LeetCode上一系列算法问题的代码。 在LeetCode上,问题通常涵盖数据结构、排序算法、搜索算法等核心计算机科学概念。...

    js解决事件冲突

    下面是一种可能的解决方案: 1. **定义变量**:首先定义几个变量来记录当前发生的事件类型: - `eventIdx`:用于记录当前事件的类型(0为`mousedown`,1为`dragstart`,2为`mouseup`,3为`dblclick`)。 - `timer...

    JS冒泡的文字云标签代码.zip

    【JS冒泡的文字云标签代码】是一个用于创建动态视觉效果的JavaScript实现,它将文本标签设计成如同缓缓上升的气泡,为用户界面增添趣味性和吸引力。这种效果常见于网站的菜单导航,使得用户在浏览时能有更直观且有趣...

    js单击事件和双击事件并存绑定

    另一种解决方案是使用计时器。当单击事件发生时,设置一个定时器,在一段时间(如300毫秒)内如果未再次触发点击,就执行单击事件的处理代码。如果在这段时间内触发了第二次点击,则清除计时器并执行双击事件的处理...

    ie不支持javascript的解决方案.docx

    以下是一些常见的IE不支持JavaScript或者存在兼容性问题的解决方案: 1. **属性访问方式** - 问题:IE允许使用`("itemName")`或`["elementName"]`访问元素属性,而Firefox仅支持`["elementName"]`。 - 解决方案:...

    js下关于onmouseout、事件冒泡的问题经验小结

    在实际应用中,应根据项目的具体需求和现有的技术栈选择最合适的解决方案。了解事件冒泡的原理是关键,当事件在DOM树中自底向上传播时,位于底层的元素(即子元素)上的事件会向上传播到父元素,这就是为什么鼠标在...

    JS中mouseover和mouseout多次触发问题如何解决

    针对标题“JS中mouseover和mouseout多次触发问题如何解决”,主要内容探讨的是在JavaScript中使用jQuery库时,处理mouseover和mouseout事件由于事件冒泡导致的多次触发问题。当用户使用鼠标在页面元素间移动时,这些...

    深入理解事件冒泡(Bubble)和事件捕捉(capture)

    事件冒泡和事件捕捉是JavaScript中处理DOM(文档对象模型)事件的关键机制,它们定义了事件如何在元素层级中从最内层向外层传播。理解这两个概念对于编写交互丰富的网页应用至关重要。 首先,事件冒泡(Bubble)是...

    基于mouseout和mouseover等类似事件的冒泡问题解决方法

    在本文中,我们将深入探讨`mouseout`和`mouseover`事件以及它们与事件冒泡相关的常见问题,同时提供一种有效的解决方案。 `mouseout`和`mouseover`事件是两种常用的DOM(文档对象模型)事件,用于追踪用户鼠标在...

    React冒泡和阻止冒泡的应用详解

    React中的事件冒泡和阻止冒泡是前端开发中常见的概念,尤其在构建复杂交互的组件时显得尤为重要。事件冒泡是指事件从最深的...这种做法兼顾了React的事件处理机制和自定义组件的需求,是解决此类问题的一个典型方案。

    “事件”& 前端代码设计 淘宝旅行计划前端架构及解决方案-地极 共47页.pptx

    为了解决这些问题,一种常见的解决方案是**事件管理**。其中,**全局事件代理机制**是一个实用的策略。它通过创建一个中央代理来集中处理所有的事件,而不是让每个模块直接监听和触发事件。这样做的好处包括: 1. *...

    JavaScript30:我对30天香草JS挑战的解决方案

    此包含针对的解决方案。 检查清单 第一天 第2天 第三天- 第4天- 第5天 第6天- 第7天-Array Cardio第2天 第8天-体验HTML5画布 第9天-第14天必须了解开发工具技巧 第10天-按住Shift键以选中多个复选框 第...

    手写DOM事件模型

    通过这样的自定义事件模型,开发者可以更好地理解和控制事件处理流程,同时也为跨浏览器的兼容性问题提供了自定义解决方案。然而,对于复杂的应用场景,仍然推荐使用原生的DOM2级事件模型或者更高级的事件库,如...

Global site tag (gtag.js) - Google Analytics