JavaScript之坑了我--事件模型細節
首先我們還得了解:
事件物件:事件發生時系統自動產生的物件,其內封裝了此事件的所有資訊。
低版本IE:window.event
W3C :事件繫結時直接傳引數 如:obj.onclick = function(event){};當事件觸發時,瀏覽器會將事件資訊封裝到事件物件中,然後作為引數傳遞obj.onclick(event)並且執行之。
事件模型:指巢狀的多個元素都有繫結了同一種事件,當此事件發生時,事件發生的先後順序是從最外層向最裡層,還是從最裡層到最外層。
從最裡層到最外層 : 冒泡模型(預設)
從最外層向最裡層 : 捕捉模型(不建議了)
案例:
<--div id="div1" width="1000px">
<--div id="div2" width="700px">
<--div id="div3" width="300px">
<--font color="green">green<--/font>
<--/div>
<--font color="yellow">yellow<--/font>
<--/div>
<--font color="red">red<--/font>
<--/div>
<--script>
document.getElementById("div3").onclick = function(event){
alert("green");
}
document.getElementById("div2").onclick = function(event){alert("yellow");}document.getElementById("div1").onclick = function(event){alert("red");}<--script>
不過我很少遇到需要事件冒泡的需求,所以我們經常會把冒泡禁止掉:
基於W3C瀏覽器中: event.stopPropagation();
基於舊版本的IE中: e.cancelBubble=true;
<--script>
document.getElementById("div3").onclick = function(event){
alert("green");stopEventBubble(event);
}
document.getElementById("div2").onclick = function(event){alert("yellow");stopEventBubble(event);}document.getElementById("div1").onclick = function(event){alert("red");stopEventBubble(event);}<--/script//阻止事件冒泡function stopEventBubble(event){
var e=event || window.event;
if (e && e.stopPropagation){ e.stopPropagation(); } else{ e.cancelBubble=true; }}
html部分元素的預設行為及如何控制:
連結:點選後跳轉
提交按鈕:點選後提交
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29900383/viewspace-1822690/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript事件模型JavaScript事件模型
- JavaScript 複習之 事件模型 和 Event物件JavaScript事件模型物件
- 前端筆記之JavaScript(十)深入JavaScript節點&DOM&事件前端筆記JavaScript事件
- Go 最細節篇|記憶體回收又踩坑了Go記憶體
- Vue、Javascript小細節VueJavaScript
- EfficientNet模型的完整細節模型
- 說說JavaScript中的事件模型JavaScript事件模型
- JavaScript 前端效能優化之事件節流JavaScript前端優化事件
- 泡杯茶,我們坐下聊聊Javascript事件環JavaScript事件
- 我理解的javascript事件迴圈(一)JavaScript事件
- 快取把我坑慘了..快取
- 那些被忽略的 JavaScript 陣列方法細節JavaScript陣列
- JavaScript 複習之 Element 節點JavaScript
- JavaScript 複習之 Document 節點JavaScript
- JavaScript之節流與防抖JavaScript
- Django搭建示例專案實戰與避坑細節Django
- JavaScript 複習之各類事件(一)JavaScript事件
- JavaScript 複習之各類事件(二)JavaScript事件
- 【freertos】012-事件標誌概念和實現細節事件
- MDN之JavaScript-高階(二)【Concurrency model and Event Loop併發模型與事件迴圈】JavaScriptOOP模型事件
- mybatis plus很好,但是我被它坑了!MyBatis
- 我這節課都學了啥
- JavaScript學習之DOM(節點、節點層級、節點操作)JavaScript
- 【跟著大佬學JavaScript】之節流JavaScript
- 陪你一起學習之javascript事件JavaScript事件
- JavaScript事件JavaScript事件
- JavaScript 事件JavaScript事件
- 【JavaScript高階進階】JavaScript變數/函式提升的細節總結JavaScript變數函式
- 使用JavaScript變數需要注意哪些語法細節?JavaScript變數
- 我的前端筆記 之 JavaScript前端筆記JavaScript
- 事件節流事件
- JavaScript 複習之瀏覽器模型JavaScript瀏覽器模型
- javascript之函式防抖與節流JavaScript函式
- JavaScript 深入學習~~我又回來了~~JavaScript
- 原始碼閱讀之LinkedList實現細節原始碼
- 原始碼閱讀之ArrayList實現細節原始碼
- 小白細節思考之讀取Request.Body
- 細節解析 JavaScript 中 bind 函式的模擬實現JavaScript函式
- “我是技術總監,你幹嘛總問我技術細節?”