如何阻止事件冒泡和默认事件

首先说什么是冒泡呢,简单的意思就是,你本来想只触发一个时间,但是实际上却出发了N个事件。

举例来说,有一个元素,如Span,你绑定了一个Click函数,你又为Div绑定了一个Click函数,而这个Span就在Div中,当你点击

Span时,同时就会触发Span和Div的Click函数。这就是冒泡。

那么怎么阻止冒泡行为呢

$('span').bind("click",function(event){
  var txt = $('#show).html() + "<p>内层span元素被点击.<p/>";
  $('#show').html(txt);
  event.stopPropagation();    //  阻止事件冒泡
 });

可见很简单,就是在绑定的函数结尾加上evert.stopPropagation()翻译成中文就是阻止传播、泛滥

阻止默认行为:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="http://www.cnblogs.com/scripts/jquery-1.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
   $("#sub").bind("click",function(event){
         var username = $("#username").val();  //获取元素的值
         if(username==""){     //判断值是否为空
       $("#show").html("<p>文本框的值不能为空.</p>");  //提示信息
       event.preventDefault();  //阻止默认行为 ( 表单提交 )
   }
   })
})
</script>
</head>
<body>
<form action="test1.html">
用户名:<input type="text" id="username" />
<br/>
<input type="submit" value="提交" id="sub"/>
</form>

<div id="show"></div>
</body>
</html>

可见event.preventDefaule()方法确实阻止了默认行为即提交表单,但是如果有冒泡事件,enent.preventDeafult()方法是不够的还要调用

event.stopPropagation()方法,简单的替代方式就是return false;两个都可以阻止掉。也就是上面的所有 event.stopPropagation();    和

event.stopPropagation()方法都可以用return false取代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值