您的位置:首页 > Web前端 > JQuery

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

2016-12-13 09:52 274 查看

首先说什么是冒泡呢,简单的意思就是,你本来想只触发一个时间,但是实际上却出发了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取代。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐