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之坑了我--事件繫結原理JavaScript事件
- JavaScript之坑了我--BOM模型速知JavaScript模型
- JavaScript之坑了我--定時器用法JavaScript定時器
- JavaScript之坑了我--物件導向預熱JavaScript物件
- JavaScript之坑了我--JSON物件明析JavaScriptJSON物件
- JavaScript之坑了我--閉包原理不過如此JavaScript
- Javascript事件模型系列(四)我所理解的javascript自定義事件JavaScript事件模型
- 面試準備之JavaScript事件模型面試JavaScript事件模型
- JavaScript之坑了我--instanceof的判斷機制測試JavaScript
- JavaScript之坑我--陣列原理探析JavaScript陣列
- JavaScript事件模型JavaScript事件模型
- JavaScript之坑了我--閉包助力OOP之模擬私有成員屬性JavaScriptOOP
- JavaScript之坑了我--一張圖看盡原型及底層模擬JavaScript原型
- JavaScript 複習之 事件模型 和 Event物件JavaScript事件模型物件
- Go 最細節篇|記憶體回收又踩坑了Go記憶體
- 前端筆記之JavaScript(十)深入JavaScript節點&DOM&事件前端筆記JavaScript事件
- Javascript事件模型系列(一)事件及事件的三種模型JavaScript事件模型
- Vue、Javascript小細節VueJavaScript
- EfficientNet模型的完整細節模型
- 提高javascript效能的小細節JavaScript
- sklearn 細節 —— SGDClassifier、Perceptron(分類模型)模型
- 說說JavaScript中的事件模型JavaScript事件模型
- Zookeeper,你可把我坑慘了!
- 快取把我坑慘了..快取
- javaScript事件(五)事件型別之滑鼠事件JavaScript事件型別
- 更新了有趣細節的 Unity 8Unity
- JavaScript 前端效能優化之事件節流JavaScript前端優化事件
- JavaScript 踩坑心得— 為了高速(上)JavaScript
- javascript節點型別詳細介紹JavaScript型別
- 最詳細的JavaScript和事件解讀JavaScript事件
- ConcurrentHashMap之實現細節HashMap
- 我理解的javascript事件迴圈(一)JavaScript事件
- 泡杯茶,我們坐下聊聊Javascript事件環JavaScript事件
- 我這節課都學了啥
- Django搭建示例專案實戰與避坑細節Django
- 帶你理解 JS 容易出錯的坑和細節JS
- mybatis plus很好,但是我被它坑了!MyBatis