`

JQuery事件冒泡机制与解决

阅读更多
1.什么是事件冒泡:

  页面上有好多事件,也可以多个元素响应一个事件.假如:

<BODY onclick="alert('aaa');">
<div onclick="alert('bbb');">
 <a href="#" class="cooltip" title="这是我的超链接提示1。" onclick="alert('ddd');> 

   提示

  </a>
</div>
</BODY>


上面这段代码一共有三个事件,body,div,a都分别绑定了单击事件。在页面中当单击a标签会连续弹出3个提示框。这就是事件冒泡引起的现象。事件冒 泡的过程是:a --> div --> body 。a冒泡到div冒泡到body

2.事件冒泡引发的问题。

本来在上面的代码中只想触发<a>元素的onclick事件,然而<div>,<body>事件也同时 触发了。因此我们必须要对事件的作用范围进行限制。当单击<a>元素的onclick事件时只触发<a>本身的事件。由于IE- DOM和标准DOM实现事件对象的方法各不相同,导致在不同浏览器中获取事件的对象变得比较困难。如果想阻止事件的传递,我们可以用 event.stopPropagation()阻止事件的传递行为.

3.jQuery对这个问题进行了必要的扩展和封装.

  $("element").bind("click",function(event){ 

     //event为事件对象

    //.........

   event.stopPropagation();   //停止事件冒泡

  });


4.阻止默认行为

网页中的某些元素是有自己的默认行为的,比如果超链接单节后需要跳转,提交按钮点击后需要提交表单,有时需要阻止这些行为,也就是默认行为。

jquery中可用用preventDefault()的方法来阻止元素的默认行为.

$('#submit').bind('click',function(event){

   var username = $('#username').val();

   if(username==""){

     alert('用户名不能为空!');

     event.preventDefault();   //阻止默认行为

   }

})


5.jquery中对冒泡和默认行为的阻止方法同样也可以改写,改写后能够达到同样的效果

event.preventDefault();  改写为:  return false;

event.stopPropagation();  改写为:  return false;





推荐大家不要图省事,任何时候都写return false;

一般情况下都是需要阻止默认行为。不要阻止事件冒泡。
分享到:
评论

相关推荐

    jQuery中on绑定事件后引发的事件冒泡问题如何解决

    总之,要解决jQuery中`.on()`事件冒泡问题,推荐的方法是将事件处理器绑定到离目标元素最近的父元素上,并在需要阻止冒泡的情况下,在事件处理函数中调用`e.stopPropagation()`方法。这样做既可以提高程序的性能,也...

    jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法

    为了解决这个问题,jQuery提供了阻止事件冒泡的机制。这里有三种常见的方法: 1. 使用`return false`:在事件处理函数中,`return false`可以阻止事件的默认行为(如链接的跳转)并阻止事件冒泡。例如: ```...

    jquery阻止冒泡事件使用模拟事件

    它会自动创建并派发一个事件,然后根据事件冒泡机制触发所有绑定在该事件上的处理器。 例如,假设我们有一个按钮,并希望在某些特定条件下触发一个自定义的事件: ```javascript $(".content").bind("myclick",...

    浅谈jQuery 中的事件冒泡和阻止默认行为

    通过为`&lt;span&gt;`元素和外部的`&lt;div&gt;`元素以及`&lt;body&gt;`元素分别绑定点击事件,作者展示了点击`&lt;span&gt;`元素时,由于事件冒泡机制,三个元素的点击事件都会被触发。为了解决这个问题,作者在`&lt;span&gt;`元素的点击事件处理...

    jquery实现的冒泡放大器

    首先,理解"冒泡"这一概念,它源于编程中的事件冒泡机制,指的是事件从最深的节点开始,逐级向上层节点传播事件的过程。在这里,我们借用这一概念,让元素在鼠标悬停时像气泡一样从小变大,从而产生视觉上的“冒泡”...

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

    通过上述讨论,我们可以看出 `onmouseout` 事件及其与事件冒泡机制之间的关系对于前端开发者来说非常重要。正确理解和应用这些概念可以帮助我们编写更加高效、可靠的代码。无论是使用 jQuery 还是原生 JavaScript,...

    jQuery中事件对象e的事件冒泡用法示例介绍

    事件冒泡是Web开发中一种常见的事件传播机制。它指的是当一个元素上的事件发生后,如果没有被特定处理,该事件会“冒泡”到父级元素,依此类推,直到到达最顶层的document对象。事件冒泡允许开发者在父元素上设置...

    JavaScript和JQuery的鼠标mouse事件冒泡处理

    在实际应用中,事件冒泡机制可能会导致非预期的事件触发,比如在一个嵌套的DOM结构中,我们可能只希望在最外层元素上响应`mouseout`事件,但实际上内部子元素的`mouseout`事件也会被触发。 为了解决冒泡导致的问题...

    JavaScript 事件冒泡应用实例分析

    正确的解决方法是将按钮的click事件改为与标题栏相同的mousedown事件,这样在点击按钮时,mousedown事件的阻止冒泡就能防止标题栏的mousedown事件触发。修改后的代码如下: ```html ();"&gt; (event);" href=...

    Learning.JQuery配套源码

    3. **事件处理**:jQuery的事件处理机制封装了原生JavaScript的事件处理,如`.on()`, `.off()`, `.trigger()`等。源码分析能揭示其如何处理事件委托、事件冒泡,以及如何实现跨浏览器的兼容性。 4. **动画效果**:...

    对jQuery的事件绑定的一些思考(补充)

    这种方法通过在父元素`.ul`上绑定事件,利用事件冒泡机制,可以监听到所有现在和将来添加到`.ul`下的`a`元素的点击事件,从而节省内存并保持性能。 性能分析显示,`Method 2`比`Method 1`更优,因为`Method 1`会为...

    jQuery in Action html版

    2. **事件处理**:介绍jQuery的事件绑定机制,包括基本事件、自定义事件和事件代理,以及事件对象的使用,帮助读者理解事件冒泡和捕获。 3. **动画与效果**:详述jQuery的动画API,如fadeIn/fadeOut、slideUp/...

    jQuery的运行机制和设计理念分析

    jQuery的运行机制与设计理念 jQuery作为一个著名的JavaScript库,它的出现极大地简化了Web开发中的DOM操作,解决了跨浏览器兼容性问题,并提供了高效的API。其设计理念主要体现在以下几点: 1. **简洁易用**:...

    尚硅谷_教学课件_jQuery

    3. **事件处理**:掌握事件绑定、解绑和触发,了解事件冒泡和事件委托的概念。 4. **动画效果**:学习创建自定义动画和使用预设动画效果,理解动画队列和延迟。 5. **Ajax交互**:理解异步请求的工作原理,学会使用...

    JQuery源码的奥秘逐行分析视频教程

    - **事件代理**:使用事件冒泡机制优化性能,通过一个共同的父节点来监听子元素发生的事件。 - **触发事件**:`trigger()` 方法用于手动触发一个事件,可以模拟用户操作或者响应某些条件的变化。 ##### 4. 动画与...

    【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)1

    JavaScript 事件机制是网页交互的...总之,理解JavaScript事件机制,特别是捕获/冒泡和DOM事件流,对于解决移动端兼容性问题至关重要。通过使用合适的工具和策略,开发者可以创建出具有良好交互体验的跨平台网页应用。

    JQuery事件委托原理与用法实例分析

    JQuery事件委托是一种高效处理大量动态元素事件绑定的技术,它基于JavaScript中的事件冒泡机制。在HTML结构中,事件通常会从最深的元素向上冒泡到其父元素,直至到达文档的根节点。事件委托就是利用这个特性,将事件...

    jquery各种版本源码

    4. **事件处理**:研究事件绑定和触发机制,理解事件委托和事件冒泡的处理。 5. **Ajax操作**:理解$.ajax方法的实现,以及如何处理异步请求。 6. **动画效果**:探索jQuery是如何实现平滑的动画效果的,如fadeIn、...

    jQuery权威指南-源代码

    此外,jQuery中完善的Ajax功能、行为与结构层的分离、可靠的事件处理机制也同样使得Web后端开发者如虎添翼,使用少量代码就可以实现复杂的功能。特别是新版本1.4.x的发布,jQuery在功能和性能方面都有质的提升,极大...

Global site tag (gtag.js) - Google Analytics