事件的触发原理:事件的触发是通过Javascript的事件冒泡机制来监测
1.bind 绑定的DOM元素。(bind方法只能给当前存在的元素绑定事件,对于事后采用JS等方式新生成的元素无效).(原因:后加的DOM元素还没有被DOM树识别)。(可以通过find方法再一次遍历一遍DOM树,但是太麻烦了)!
2.live 绑定的是DOM树。(所以能对后生成的元素也绑定相应的事件的原因归结在“事件委托”上面,所谓“事件委托”就是指绑定在祖先元素上的事件可以在其后代元素上进行使用。live方法的处理机制就是把事件绑定在DOM树的根节点上,而不是直接绑定在某个元素上。)
3.delegate 绑定是的是DOM树。(live与delegate 相比,后者的效率要高。)
Array.prototype.get = function(n) {
if (n<0) { return; } return this.slice(0,n); } Array.prototype.del = function(n) { if (n<0) { return; } return this.splice(0,n); }bind是绑定到DOM元素身上的。
live、delegate、on之类的是通过冒泡filter判断来源触发的。
bind只能是DOM存在才能绑定,live等是触发的时候判断。
DOM层层嵌套的,子元素在父元素里,子元素的事件理应父元素也能捕获。事件绑定优缺点:
- 过多的事件绑定会损耗内存
- 后期生成HTML会没有事件绑定,需要重新绑定
- 语法过于繁杂