关于addEventListener参数,以及HTML DOM的事件传播方式(冒泡与捕获)
addEventListener()
·addEventListener()事件监听,可以用removeEventListener()来移除事件的监听。
·addEventListener()将事件处理程序附加到指定元素,不覆盖现有的事件处理程序。
·addEventListener()可以添加到任何DOM对象,包括window对象。
语法:element.addEventListener(event,function,useCapture);
参数:
- event:事件的类型,click、mousedown等。没有on前缀。
- function:事件发生时执行的函数
- useCapture:指定用事件冒泡还是事件捕获。是一个布尔值:默认为false,即使用事件冒泡;值为true时,使用事件捕获。
例子
element.addEventListener("click", function(){
alert("Hello World!"); });
也可以把函数写在外部,把函数名当作第二个参数:
element.addEventListener("click", myFunction);
function myFunction() {
alert ("Hello World!");
}
允许在同一元素中添加多个事件,而不覆盖原有的事件。
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
事件冒泡与事件捕获
HTML DOM有两种事件传播方式:事件冒泡和事件捕获。
举个例子:如果div元素中有p元素,那么用户单击p元素,应该先处理p元素,还是先处理div元素的事件呢?
- 事件冒泡:先处理内部元素的事件,再触发外部元素;即先处理p元素,再处理div元素。
- 事件捕获:先处理外部元素的事件,再触发内部元素。即先处理div元素,再处理p元素。
事件移除 removeEventListener()
element.removeEventListener("mousemove", myFunction);