阻止冒泡和阻止默認事件—js和jq相同,jq的event是一個全局的變量
我們寫代碼的時候常用的都是事件冒泡,但是有的時候我們並不需要觸發父元素的事件,而瀏覽器也有自己的默認行為(表單提交、超鏈接跳轉等)。
- 點擊按鈕子元素的時候不希望觸發父元素的點擊事件。
- 之前提到的mouseout事件。
- 在大部分元素上滾動鼠標滑輪都會觸發body的界面滑動(如果界面有滾動條)
- 在有滾動條的元素中滾動不會觸發body界面的滑動,但是滑條滑到底部或者頂部並繼續滑動的時候會觸發父元素乃至body整體的界面滑動。
其中,1、2涉及的是事件的冒泡,3、4涉及的則是事件的默認事件。
在jq中使用的是(其中的event是一個全局變量,也許?我並沒有定義它,而是直接拿來用的):
event.stopPropagation();//阻止冒泡
event.preventDefault();//阻止默認行為
在js中:
function clickfunction(e){
var event = e||window.event;//兼容
event.stopPropagation();//阻止冒泡
event.preventDefault();//阻止默認行為
}
可以看出只是event的獲取方式不同。
---------------------------------------------------------------------------------------------------------------------------
補充一點,我似乎忘了它的兼容寫法
阻止瀏覽器默認行為兼容性寫法
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
阻止冒泡寫法
event.stopPropagation ? event.stopPropagation() : (event.cancelBubble = true);