JQuery如何阻止事件冒泡

<style>#content{width: 140px;border: 1px solid blue;}#msg{width: 100px;height: 100px;margin: 20px;border: 1px solid red;}</style>
<body><div id="content">外層div<div id="msg">內(nèi)層div</div></div></body>
顯示結(jié)果

對應(yīng)的jQuery代碼如下:
<script type="text/JavaScript" src="js/jquery-1.8.3.js"></script><script type="text/JavaScript">$(function(){// 為內(nèi)層div綁定click事件$("#msg").click(function(){alert("我是小div");});// 為外層div元素綁定click事件$("#content").click(function(){alert("我是大div");});// 為body元素綁定click事件$("body").click(function(){alert("我是body");});});</script>
當(dāng)點(diǎn)擊小div時(shí),會(huì)觸發(fā)大div與body 的點(diǎn)擊事件。點(diǎn)擊大div時(shí)會(huì)觸發(fā)body的點(diǎn)擊事件。
如何防止這種冒泡事件發(fā)生呢?
修改如下:
<script type="text/javascript" src="js/jquery-1.8.3.js"></script><script type="text/javascript">$(function(){// 為內(nèi)層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(); // 阻止事件冒泡
有時(shí)候點(diǎn)擊提交按鈕會(huì)有一些默認(rèn)事件。比如跳轉(zhuǎn)到別的界面。但是如果沒有通過驗(yàn)證的話,就不應(yīng)該跳轉(zhuǎn)。這時(shí)候可以通過設(shè)置event.preventDefault(); //阻止默認(rèn)行為 ( 表單提交 )。
html部分
<body><form action="test.html">用戶名:<input type="text" id="username" /><br/><input type="submit" value="提交" id="sub"/></form></body>

<script type="text/javascript" src="js/jquery-1.8.3.js"></script><script type="text/javascript">$(function(){$("#sub").click(function(event){//獲取元素的值,val() 方法返回或設(shè)置被選元素的值。var username = $("#username").val();//判斷值是否為空if(username==""){//提示信息//alert("文本框的值不能為空");$("#msg").html("<p>文本框的值不能為空.</p>");//阻止默認(rèn)行為 ( 表單提交 )event.preventDefault();}});});</script>
//阻止默認(rèn)行為 ( 表單提交 )event.preventDefault();
還有一種防止默認(rèn)行為的方法就是return false。效果一樣。
代碼如下:
<script type="text/javascript" src="js/jquery-1.8.3.js"></script><script type="text/javascript">$(function(){$("#sub").click(function(event){//獲取元素的值,val() 方法返回或設(shè)置被選元素的值。var username = $("#username").val();//判斷值是否為空if(username==""){//提示信息//alert("文本框的值不能為空");$("#msg").html("<p>文本框的值不能為空.</p>");//阻止默認(rèn)行為 ( 表單提交 )//event.preventDefault();return false;}});});</script>
同理,上面的冒泡事件也可以通過return false來處理
<script type="text/javascript" src="js/jquery-1.8.3.js"></script><script type="text/javascript">$(function(){// 為內(nèi)層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;});});
本文完?

評論
圖片
表情
