可以选择是事件流。可绑定多个同类事件。事件名可以组成字符串。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="content"></div>
</body>
</html>
添加监听的事件
let content = document.getElementById("content");
content.addEventListener("click", function () {
console.log("seriousLose");
}, false)
content.addEventListener("click", function () {
console.log("hello seriousLose");
}, false)
阻止默认事件preventDefault()
document.body.addEventListener('touchmove', function (event) {
event.preventDefault();
},false);
阻止事件冒泡stopPropagation()
<div id="div"><button id="btn">按钮</button></div>
function showType(event) {
alert(event.type);
event.stopPropagation();
}
function showDiv() {
alert("div");
}
document.getElementById("btn").addEventListener("click", showType);
document.getElementById("div").addEventListener("click", showDiv);
移出事件
function add() {
console.log("I me here seriousLose");
}
content.addEventListener("mouseenter", add, false);
content.removeEventListener("mouseenter", add, false);
<aside> 💡 removeEventListener 需要知道你需要移出的是哪个事件处理函数。匿名函数丢弃了自身函数名,是移出不了。
</aside>
content.addEventListener("click", function () {
console.log("hello seriousLose");
}, false)
// 是没有用的,并不能被移出
content.removeEventListener("click", function () {
console.log("hello seriousLose");
}, false), false);
<aside> 💡 IE9以下的IE浏览器不支持 addEventListener()和removeEventListener(),使用 attachEvent()与detachEvent() 代替, 因为IE9以下是不支持事件捕获的,所以也没有第三个参数,第一个事件名称前要加on
</aside>