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