阻止默認事件行爲和事件冒泡
默認事件:
例如a標籤點擊後會進行跳轉,跳轉的操作就是默認事件
例如submit按鈕點擊回車後會進行表單提交,也屬於默認事件
解決方法:
w3c的方法是e.preventDefault(),IE則是使用e.returnValue = false;
事件冒泡:
冒泡簡單的舉例來說,兒子知道了一個祕密消息,它告訴了爸爸,爸爸知道了又告訴了爺爺,一級級傳遞從而引起事件的混亂,而阻止冒泡就是不讓兒子告訴爸爸,爸爸自然不會告訴爺爺了。下面的domo就是很好的例子。
<body>
<input type="button" id="btn" value="語言" />
<div id="box"></div>
</body>
我所實現的效果是:點擊按鈕btn讓box顯示,而點擊其他地方則讓box消失。
如果我不阻止冒泡的話,那麼首先btn會觸發點擊時間,讓盒子顯示,但是由於box是包含在document中的,所以會向上冒泡又觸發document的點擊事件,盒子又消失。這個事件的執行順序可以在不同的點擊事件中使用alert來驗證。直接使用oEvent.cancelBubble
= true 即可。
僅僅阻止默認事件行爲
jQuery 代碼:
$("a").live("click", function(event){
event.preventDefault();
});
阻止默認事件行爲和事件冒泡,返回 false
jQuery 代碼:
$("a").live("click", function() { return false; });