700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JS事件冒泡与事件捕获

JS事件冒泡与事件捕获

时间:2019-06-19 23:47:59

相关推荐

JS事件冒泡与事件捕获

简单理解:

事件冒泡:页面上有这么一个节点树,div>ul>li>a;比如给最里面的a加一个click点击事件,那么这个事件就会一层一层的往外执行,执行顺序a>li>ul>div,即自下而上触发事件。

事件捕获:跟上面的正好相反,自上而下触发事件,也就是从外到里。

示例:

<ul id="ul1"><li id="li1">111</li><li>222</li><li>333</li><li>444</li></ul>

绑定事件:

document.getElementById("ul1").addEventListener("click",function(e){alert("ul事件被触发,"+this.id);})document.getElementById("li1").addEventListener("click",function(e){alert("li事件被触发,"+this.id)})

现在去点击111那行,执行结果是:

li事件被触发,li1ul事件被触发,ul1

很明显是事件冒泡,自下而上,从里向外触发事件。

要注意:绑定事件方法有3个参数,第三个参数就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。

改变参数,测试事件捕获:

document.getElementById("ul1").addEventListener("click",function(e){alert("ul事件被触发,"+this.id);},true)document.getElementById("li1").addEventListener("click",function(e){alert("li事件被触发,"+this.id)},true)

现在去点击111那行:

ul事件被触发,ul1li事件被触发,li1

执行结果显示,从外向里执行事件。

应用:

事件委托会用到事件冒泡的原理:也就是说只需要给ul绑定事件就可以了,点击li时由于冒泡机制会自己执行ul绑定的事件,从而避免li过多,逐条绑定事件造成的性能问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。