什么是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时,...
另一种解决方案是利用 `onmousemove` 事件的优先级来阻止在子元素中触发 `onmouseout` 事件。 ```html ('div2').style.display='block';">触发显示浮动层 ;" onmouseout="this.style.display='none';"> <li>1 ...
2. **`window.event.cancelBubble = true`**:这是针对IE浏览器的解决方案。在IE中,`event`对象不是默认传递给事件处理函数的,因此需要通过`window.event`来访问。设置`cancelBubble`属性为`true`可以阻止事件冒泡...
在JavaScript中,`mouseover` 和 `mouseout` 是两个常见的鼠标事件,它们分别在鼠标进入和离开元素时触发。然而,在处理这些事件时,一个...注意,此解决方案依赖于DOM2级事件模型,确保在支持此模型的浏览器中使用。
在JavaScript编程中,事件处理是页面交互的核心部分。事件冒泡和获取控件ID值是JavaScript事件处理中的两个重要概念,对于理解...在编写JavaScript代码时,应考虑兼容性问题,为不同的浏览器环境提供适当的解决方案。
正确的解决方案是将阻止事件冒泡的代码独立出来,作为一个单独的函数`cancelBubble(e)`,并在`show(info)`函数中调用它。 下面是改进后的代码示例: ```javascript function show(info) { alert(info); ...
"JavaScript_Leetcode解决方案.zip"这个压缩包显然是为JavaScript开发者准备的,包含了解决LeetCode上一系列算法问题的代码。 在LeetCode上,问题通常涵盖数据结构、排序算法、搜索算法等核心计算机科学概念。...
下面是一种可能的解决方案: 1. **定义变量**:首先定义几个变量来记录当前发生的事件类型: - `eventIdx`:用于记录当前事件的类型(0为`mousedown`,1为`dragstart`,2为`mouseup`,3为`dblclick`)。 - `timer...
【JS冒泡的文字云标签代码】是一个用于创建动态视觉效果的JavaScript实现,它将文本标签设计成如同缓缓上升的气泡,为用户界面增添趣味性和吸引力。这种效果常见于网站的菜单导航,使得用户在浏览时能有更直观且有趣...
另一种解决方案是使用计时器。当单击事件发生时,设置一个定时器,在一段时间(如300毫秒)内如果未再次触发点击,就执行单击事件的处理代码。如果在这段时间内触发了第二次点击,则清除计时器并执行双击事件的处理...
以下是一些常见的IE不支持JavaScript或者存在兼容性问题的解决方案: 1. **属性访问方式** - 问题:IE允许使用`("itemName")`或`["elementName"]`访问元素属性,而Firefox仅支持`["elementName"]`。 - 解决方案:...
在实际应用中,应根据项目的具体需求和现有的技术栈选择最合适的解决方案。了解事件冒泡的原理是关键,当事件在DOM树中自底向上传播时,位于底层的元素(即子元素)上的事件会向上传播到父元素,这就是为什么鼠标在...
针对标题“JS中mouseover和mouseout多次触发问题如何解决”,主要内容探讨的是在JavaScript中使用jQuery库时,处理mouseover和mouseout事件由于事件冒泡导致的多次触发问题。当用户使用鼠标在页面元素间移动时,这些...
事件冒泡和事件捕捉是JavaScript中处理DOM(文档对象模型)事件的关键机制,它们定义了事件如何在元素层级中从最内层向外层传播。理解这两个概念对于编写交互丰富的网页应用至关重要。 首先,事件冒泡(Bubble)是...
在本文中,我们将深入探讨`mouseout`和`mouseover`事件以及它们与事件冒泡相关的常见问题,同时提供一种有效的解决方案。 `mouseout`和`mouseover`事件是两种常用的DOM(文档对象模型)事件,用于追踪用户鼠标在...
React中的事件冒泡和阻止冒泡是前端开发中常见的概念,尤其在构建复杂交互的组件时显得尤为重要。事件冒泡是指事件从最深的...这种做法兼顾了React的事件处理机制和自定义组件的需求,是解决此类问题的一个典型方案。
为了解决这些问题,一种常见的解决方案是**事件管理**。其中,**全局事件代理机制**是一个实用的策略。它通过创建一个中央代理来集中处理所有的事件,而不是让每个模块直接监听和触发事件。这样做的好处包括: 1. *...
此包含针对的解决方案。 检查清单 第一天 第2天 第三天- 第4天- 第5天 第6天- 第7天-Array Cardio第2天 第8天-体验HTML5画布 第9天-第14天必须了解开发工具技巧 第10天-按住Shift键以选中多个复选框 第...
通过这样的自定义事件模型,开发者可以更好地理解和控制事件处理流程,同时也为跨浏览器的兼容性问题提供了自定义解决方案。然而,对于复杂的应用场景,仍然推荐使用原生的DOM2级事件模型或者更高级的事件库,如...