JS .addEventListener( ) 给元素添加新事件(事件监听器)
2018-10-09 19:11
399 查看
什么是事件监听:
当同一个对象使用.onclick的写法触发多个方法的时候,后一个方法会把前一个方法覆盖掉,也就是说,在对象的onclick事件发生时,只会执行最后绑定的方法。而用事件监听则不会有覆盖的现象,每个绑定的事件都会被执行。
用 .addEventListener( ) 可以为元素绑定多个事件,而且每个事件都可以被执行,实现事件监听。
语法:
Element.addEventListener(event, function, useCapture)
event: 第一个参数是事件的类型 (如 "click" 或 "mousedown").
function: 第二个参数是事件触发后调用的函数。
useCapture: 第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
[code]<p>该实例使用 addEventListener() 方法在按钮中添加点击事件。 </p> <button id="myBtn">点我</button> <script> document.getElementById("myBtn").addEventListener("click", function(){ alert("Hello World!"); }); </script>
向一个元素添加多个事件
[code]var x = document.getElementById("myBtn"); x.addEventListener("click", myFunction); x.addEventListener("click", someOtherFunction); function myFunction() { alert ("Hello World!") } function someOtherFunction() { alert ("函数已执行!") }
向同一个元素中添加多个事件句柄(不同事件类型)
[code]element.addEventListener("mouseover", myFunction); element.addEventListener("click", mySecondFunction); element.addEventListener("mouseout", myThirdFunction);
向 Window 对象添加事件句柄
[code]window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext; });
事件冒泡或事件捕获?
事件传递有两种方式:冒泡与捕获。
事件传递定义了元素事件触发的顺序。 如果你将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?
在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。( 由内而外)
在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。(由外而内)
addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型:
addEventListener(event, function, useCapture);
useCapture 参数:默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。
更多 slibings 用法和事件冒泡与捕获:点击: 彻底弄懂JS的事件冒泡和事件捕获
阅读更多相关文章推荐
- 利用事件委托解决js元素添加后未响应绑定事件问题
- jquery动态添加元素后, 该元素事件失效,可尝试原生 js写法解决
- js 获取当前焦点所在的元素、给元素和input控件添加键盘监听事件、添加页面级的键盘监听事件
- 通过原生JS实现为元素添加事件的方法
- js 动态给元素添加、移除事件的实现方法
- js为动态创建的元素添加事件
- JS给元素添加事件
- js为动态添加的元素增加事件(事件委托)
- Js - JQ事件委托( 适用于给动态生成的脚本元素添加事件)
- 通过原生JS实现为元素添加事件的方法
- js中给一个元素添加事件
- js为动态添加的元素增加事件(事件委托)
- 页面元素用JS动态添加的有效事件绑定方式
- JS----动态添加元素绑定事件
- 通过原生JS实现为元素添加事件
- js为元素添加onclick事件
- js 给dom元素添加事件
- ready和onload比较;可以在下面的script里面调用先前script;动态为元素添加事件;浮动广告;js添加删除tr
- jquery on() bind()绑定的点击事件在js动态新添加的元素生效