jQuery如何防止这种冒泡事件发生

冒泡事件就是点击子节点,事件会向上传递,最后触发父节点,祖先节点的点击事件。

html代码部分:

代码如下:

<body>
    <div id="content">
        外层div元素
        <span>内层span元素</span>
        外层div元素
    </div>
    <div id="msg"></div>
</body>

jQuery代码如下:

代码如下:

<script type="text/javascript">
$(function(){
    $('span').bind("click",function(){
        var txt = $('#msg').html() + "<p>内层span元素被点<p/>";
        $('#msg').html(txt);
    });
    $('#content').bind("click",function(){
        var txt = $('#msg').html() + "<p>外层div元素被点击<p/>";
        $('#msg').html(txt);
    });
    $("body").bind("click",function(){
        var txt = $('#msg').html() + "<p>body元素被点击<p/>";
        $('#msg').html(txt);
    });
})
</script>

当点击span时,会触发div与body 的点击事件。点击div时会触发body的点击事件。

如何防止这种冒泡事件发生呢?修改如下:

代码如下:

<script type="text/javascript">
$(function(){
    $('span').bind("click",function(event){
        var txt = $('#msg').html() + "<p>内层span元素被点击<p/>";
        $('#msg').html(txt);
        event.stopPropagation();    // 阻止事件冒泡
    });
    $('#content').bind("click",function(event){
        var txt = $('#msg').html() + "<p>外层div元素被点击<p/>";
        $('#msg').html(txt);
        event.stopPropagation();    // 阻止事件冒泡
    });
    $("body").bind("click",function(){
        var txt = $('#msg').html() + "<p>body元素被点击<p/>";
        $('#msg').html(txt);
    });
})
</script>

有时候点击提交按钮会有一些默认事件。比如跳转到别的界面。但是如果没有通过验证,就不应该跳转。这时候可以通过设置event.preventDefault(); 阻止默认行为。下面是案例:

代码如下:

<script type="text/javascript">
$(function(){
   $("#sub").bind("click",function(event){
         var username = $("#username").val();  //获取元素的值,val() 方法返回或设置被选元素的值。
         if(username==""){     //判断值是否为空
             $("#msg").html("<p>文本框的值不能为空.</p>");  //提示信息
             event.preventDefault();  //阻止默认行为 ( 表单提交 )
         }
   })
})
</script>

html部分:

代码如下:

<body>
    <form action="test.html">
    用户名:<input type="text" id="username" /><br/>
    <input type="submit" value="提交" id="sub"/>
    </form>
    <div id="msg"></div>
</body>

还有一种防止默认行为的方法就是return false。效果一样。代码如下:

代码如下:

<script type="text/javascript">
$(function(){
   $("#sub").bind("click",function(event){
         var username = $("#username").val(); 
         if( username == "" ){
             $("#msg").html("<p>文本框的值不能为空.</p>");
             return false;
         }
   })
})
</script>

同理,上面的冒泡事件也可以通过return false来处理。

代码如下:

<script type="text/javascript">
$(function(){
    $('span').bind("click",function(event){
        var txt = $('#msg').html() + "<p>内层span元素被点<p/>";
        $('#msg').html(txt);
        return false;
    });
    $('#content').bind("click",function(event){
        var txt = $('#msg').html() + "<p>外层div元素被点<p/>";
        $('#msg').html(txt);
        return false;
    });
    $("body").bind("click",function(){
        var txt = $('#msg').html() + "<p>body元素被点<p/>";
        $('#msg').html(txt);
    });
})
</script>

jQuery对DOM的事件触发具有冒泡特性。有时利用这一特性可以减少重复代码,但有时候我们又不希望事件冒泡。这个时候就要阻止 jQuery.Event冒泡。

(0)

相关推荐

  • JQuery中DOM事件绑定用法详解

    本文实例讲述了JQuery中DOM事件绑定用法.分享给大家供大家参考.具体分析如下: 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.m

  • JQuery中DOM事件冒泡实例分析

    本文实例分析了JQuery中DOM事件冒泡.分享给大家供大家参考.具体分析如下: 什么是冒泡 在页面上可以有多个事件,也可以多个元素响应同一个事件.假设网页上有两个元素,其中一个元素嵌套在另一个元素里,并且都被绑定了click事件,同时body元素上也绑定了click事件. <div id="content"> 外层div元素 <span>内层span元素</span> 外层div元素 </div> <script type=&qu

  • JQuery中阻止事件冒泡几种方式及其区别介绍

    JQuery 提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); 复制代码 代码如下: $("#div1").mousedown(function(event){ event.stopPropagation(); }); 方式二:return false; 复制代码 代码如下: $("#div1").mousedown(function(event){ return false; }); 但是这两种方式是有区别的.return

  • jQuery中阻止冒泡事件的方法介绍

    一.冒泡事件简介 当我们点击一个控件的时候,如果包括这个控件的父控件也有click事件,则会继续执行.比如:div下的a都有click事件,点击a的时候,会alert出现2次.这个现象叫做冒泡事件. 这个事件从原始元素开始一直冒泡到DOM树的最上层.目标元素: 任何一个事件的目标元素都是最开始的那个元素,在我们的这个例子中也就是按钮,并且它在我们的元素对象中以属性的形式出现.使用事件代理的话我们可以把事 件处理器添加到一个元素上,等待一个事件从它的子级元素里冒泡上来,并且可以很方便地得知这个事件

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

    之前查手册的时候没有看到有事件对象这一概念,当时我想实现的是点击一个文本框出现一个下拉多选框,在文本框失去焦点是触发blur事件,从而使下拉框隐藏起来.但是当我要选择多选框是也会使它隐藏,就不能进行选择了,这让我很郁闷.查了一天的资料,终于在脱离了焦点这一块.在网上发现有一个事件冒泡的东西,发现通过点击可以实现我的这一功能. e.stopPropagation()阻止事件冒泡 复制代码 代码如下: <head> <title></title> <script sr

  • JQuery中DOM加载与事件执行实例分析

    本文实例讲述了JQuery中DOM加载与事件执行原理.分享给大家供大家参考.具体分析如下: JavaScript和HTML之间的交互是通过用户和浏览器操作页面时引发的事件来处理的.当文档或者它的某些元素发生某些变化或操作时,浏览器会自动生成一个事件.例如当浏览器装载完一个文档后,会生成事件:当用户单击某个按钮时,也会生成事件.虽然利用传统的JavaScript事件能完成这些交互,但jQuery增加并扩展了基本的事件处理机制.jQuery不仅提供了更加优雅的事件处理语法,而且极大地增强了事件处理能

  • JQuery中DOM事件合成用法实例分析

    本文实例讲述了JQuery中DOM事件合成用法.分享给大家供大家参考.具体分析如下: jQuery有两个合成事件--hover()方法和toggle()方法,类似前面讲过的ready()方法,hover()方法和toggle()方法都属于jQuery自定义的方法. hover()方法 hover()方法的语法结构为: hover(enter,leave); hover()方法用于模拟光标悬停事件.当光标移动到元素上时,会触发指定的第1个函数(enter);当光标移出这个元素时,会触发指定的第2个

  • 一个小例子解释如何来阻止Jquery事件冒泡

    什么是JS事件冒泡? 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window). 如何来阻止Jquery事件冒泡? 通过一个小例子来解释 <!DOCTYPE html PUBLIC "-//W3C//D

  • jQuery阻止事件冒泡具体实现

    下面是html代码部分: 复制代码 代码如下: <body><div id="content">    外层div元素    <span>内层span元素</span>    外层div元素</div> <div id="msg"></div></body> 对应的jQuery代码如下: 复制代码 代码如下: <script type="text/java

  • jQuery如何防止这种冒泡事件发生

    冒泡事件就是点击子节点,事件会向上传递,最后触发父节点,祖先节点的点击事件. html代码部分: 复制代码 代码如下: <body>     <div id="content">         外层div元素         <span>内层span元素</span>         外层div元素     </div>     <div id="msg"></div> </

  • 深入理解jQuery之防止冒泡事件

    冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 <span>内层span元素</span> 外层div元素 </div> <div id="msg"></div> </body> 对应的jQuery代码如下: <script type="text/

  • jquery的冒泡事件的阻止与允许(三种实现方法)

    有时我们不希望冒泡或默认的事件发生,这样就需要一些jQuery的的方法阻止冒泡和默认的事件了.可以通过以下三种方法做到不同程度的阻止. A:return false --->In event handler ,prevents default behavior and event bubbing . return false 在事件的处理中,可以阻止默认事件和冒泡事件. B:event.preventDefault()---> In event handler ,prevent default

  • Js冒泡事件详解及阻止示例

    Js冒泡机制是指如果某元素定义了事件A,如click事件,如果触发了事件之后,没有阻止冒泡事件,那么事件将向父级元素传播,触发父类的click函数. 如下例所示: 复制代码 代码如下: <html> <script type="text/javascript" src="jquery-1.7.1.js"></script> <script> function ialertdouble(e) { alert('inner

  • 关于jquery中动态增加select,事件无效的快速解决方法

    近来做项目,用的jquery1.6.2库,当动态增加div 及select时,事件却不起作用. 查了一些资料,发现bind事件:向匹配元素附加一个或更多事件处理器.而live事件:为当前或未来的匹配元素添加一个或多个事件处理器. 其资料如下: [bind和live的区别] live方法其实是bind方法的变种,其基本功能就同bind方法的功能是一样的,都是为一个元素绑定某个事件,但是bind方法只能给当前存在的元素绑定事件,对于事后采用JS等方式新生成的元素无效,而live方法则正好弥补了bin

  • Js 冒泡事件阻止实现代码

    1. 事件目标 现在,事件处理程序中的变量event保存着事件对象.而event.target属性保存着发生事件的目标元素.这个属性是DOM API中规定的,但是没有被所有浏览器实现 .jQuery对这个事件对象进行了必要的扩展,从而在任何浏览器中都能够使用这个属性.通过.target,可以确定DOM中首先接收到事件的元素(即实际被单击的元素).而且,我们知道this引用的是处理事件的DOM元素,所以可以编写下列代码: 复制代码 代码如下: $(document).ready(function(

  • JavaScript捕捉事件和阻止冒泡事件实例分析

    本文实例讲述了JavaScript捕捉事件和阻止冒泡事件.分享给大家供大家参考,具体如下: 今日,项目程序出现异常,后发现跟冒泡事件有关,利用此机会探索一下利用Javascript捕获和冒泡事件. 一.要探究捕获和冒泡事件,首先要知道什么是事件的捕获和冒泡,所以呢,先从概念入手: 事件的冒泡:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传

  • js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件

    1. event.preventDefault();  -- 阻止元素的默认事件. 注:a元素的点击跳转的默认事件 , button,radio等表单元素的默认事件 , div 元素没有默认事件 例: 复制代码 代码如下: <a href="http://www.baidu.com" target="_black">百度</a> 复制代码 代码如下: var samp = document.getElementByTagName("

  • jQuery与JS加载事件用法分析

    本文实例分析了jQuery与JS加载事件用法.分享给大家供大家参考,具体如下: <!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"> <hea

随机推荐