事件流
- 描述从页面接收事件的顺序。冒泡 捕获。
- IE 提出的 事件冒泡流(Event Bubbling)
NetScape 提出的 事件捕获流(Event Capturing)
事件流的三个阶段
事件捕获阶段
- 事件目标阶段 -> 事件源的时候按照代码先后顺序执行
-
DOM分级
DOM0
- Elem.onclick/onchange/..这些句柄
- onclick = “test()”
- DOM1 没有定义任何事件模型
DOM2 定义了addEventListner,removeEventListner这种方法 W3C规范
事件对象
wrapper.onclick = function (e) {
//IE window.event
var e = e || window.event;
console.log(e);
}
事件源对象 target srcElement
火狐只有target
- IE只有srcElement
-
事件委托,事件代理
在父级绑定事件。子集触发后,冒泡到父级。在通过事件源对象来操作子集 ```javascript
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
var oUl = document.getElementsByTagName(‘ul’)[0], oList = oUl.getElementsByTagName(‘li’), len = oList.length, item;
oUl.onclick = function (e) { var tar = e.target || e.srcElement; // for循环判断。全等就打印出i 当li的长度比较长的时候不适用、 for (var i = 0; i < len; i++) { item = oList[i]; if (item === tar) { console.log(i); } } // 企业一般的做法。调用数组的indexOf方法; Array.prototype.indexOf.call(oList, tar); } ```