帶你學習JQuery:事件冒泡和阻止默認行為


 

首先說什么是冒泡呢,簡單的意思就是,你本來想只觸發一個時間,但是實際上卻出發了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取代。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM