阻止事件冒泡和阻止后续代码执行

冒泡事件是点击子集标签的事件会触发父级标签的事件;

对应的jQuery代码如下:

 <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
    <script type="text/javascript">
    $(function(){
        // 为内层div绑定click事件
        $("#msg").click(function(){
            alert("我是小div");
        });
     // 为外层div元素绑定click事件
        $("#content").click(function(){
            alert("我是大div");
        });
        // 为body元素绑定click事件
        $("body").click(function(){
            alert("我是body");
        });
    });

    </script>

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

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

修改如下:

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
    <script type="text/javascript">
    $(function(){
        // 为内层div绑定click事件
        $("#msg").click(function(event){
            alert("我是小div");
            event.stopPropagation();    //  阻止事件冒泡
        });
     // 为外层div元素绑定click事件
        $("#content").click(function(event){
            alert("我是大div");
            event.stopPropagation();    //  阻止事件冒泡
        });
        // 为body元素绑定click事件
        $("body").click(function(event){
            alert("我是body");
            event.stopPropagation();    //  阻止事件冒泡
        });
    });

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

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

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

//阻止默认行为 ( 表单提交 )
                    event.preventDefault();  

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

代码如下:

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

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

 <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
    <script type="text/javascript">
    $(function(){
        // 为内层div绑定click事件
        $("#msg").click(function(event){
            alert("我是小div");
            //event.stopPropagation();    //  阻止事件冒泡
                return false;
        });
     // 为外层div元素绑定click事件
        $("#content").click(function(event){
            alert("我是大div");
            //event.stopPropagation();    //  阻止事件冒泡
                 return false;
        });
        // 为body元素绑定click事件
        $("body").click(function(event){
            alert("我是body");
            //event.stopPropagation();    //  阻止事件冒泡
                return false;
        });
    });                    
时间: 2024-12-16 11:15:02

阻止事件冒泡和阻止后续代码执行的相关文章

阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event.preventDefault()方法 这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素: 3.return false  : 这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件:写上此代

阻止事件冒泡 和 阻止事件默认行为

1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event.preventDefault()方法 这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素: 3.return false  : 这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件:写上此代码,连接不会被打开,事件也不会传递到上一层的

JS 之 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

在前端开发中,有时我们需要阻止冒泡和阻止默认事件的发生. 一.event.stopPropagation() 阻止事件的冒泡,不让事件向documen上蔓延,但是默认事件任然会执行,当调用这个方法的时候,如果点击一个连接,这个连接仍然会被打开. 二.event.preventDefault() 阻止默认事件的方法,调用此方法时,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素: 三.return false: 这个方法比较暴力,会同时阻止事件冒泡也会阻止默认事件:写上此代码,连接不会被

js阻止浏览器、元素的默认事件与js阻止事件冒泡、阻止事件流

嵌套的div元素,如果父级和子元素都绑定了一些事件,那么在点击最内层子元素时可能会触发父级元素的事件,下面介绍一下js阻止默认事件与js阻止事件冒泡示例,大家参考使用吧 1. event.preventDefault();  -- 阻止元素的默认事件.注:a元素的点击跳转的默认事件 , button,radio等表单元素的默认事件 , div 元素没有默认事件 例: 复制代码代码如下: <a href="http://www.baidu.com" target="_bl

阻止事件冒泡,阻止默认事件

阻止事件冒泡 html代码: <table>  <tr>    <td><span>冒泡事件测试</span></td>  </tr></table> js代码: $('table').click(function(){    alert('table');});$('td').click(function(){    alert('td');});$('span').click(function(e){   

阻止事件冒泡和阻止默认行为

// 阻止事件冒泡 function stopBubble(e){ if(e && e.stopPropagation){ e.stopPropagation(); }else{ window.event.cancelBubble = true } } // 阻止默认行为 function stopDefault(e){ if(e && e.preventDefault){ e.preventDefaule() }else{ window.event.returnValue

jQuery阻止事件冒泡的例子

下面给给各位朋友稍加整理了一jquery中阻止事件冒泡的一些例子,我们知道JQuery 提供了两种方式来阻止事件冒泡,但我们简单的利用它来做一些应用可能不深入或不理解,下面整理了更详细的方法,有兴趣的朋友可进入参考. jQuery.Event提供了一个非常简单的方法来阻止事件冒泡:event.stopPropagation();  代码如下 复制代码 $("p").click(function(event){      event.stopPropagation(); // do so

js阻止事件冒泡 return false / e.stopPropagation() /e.preventDefault()

由于每个元素在文档里面触发时都会冒泡 如果每个层上都有alert事件,那么触发里层div时,alert 里层,外层,最外层. 为了防止事件之间干扰,需要阻止事件冒泡. 一般使用e.stopPropagation(); ie8及其以下不支持,需要使用e.cancelBubble=false: 另外e是用来获得window的全局对象.e可以使用任意其他字母或者单词代替,比如a,b,c,d....,event,obj等等. 每当触发一个事件,系统都会给这个事件传一个对象,从而获得全局对象. 比如通过e

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

1.事件冒泡: 当点击内部 <span> 元素时,会触发自身及外层 <div> 和 <body> 的点击事件,这就是事件冒泡引起的.事件会随着 DOM 的层次结构依次向上传播. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(