首页 > 基础资料 博客日记
【JavaScript】阻止事件冒泡和默认行为
2024-08-15 19:00:07基础资料围观159次
默认行为
在JavaScript中,事件默认行为是指在特定的事件发生时浏览器自动执行的操作。例如,当用户单击一个链接时,浏览器会自动跳转到链接的URL页面;form 元素 的 action 属性值表单内容要提交的地址,而用户点击表单元素中嵌套的提交按钮时,就会有一个默认的提交操作。
而有时候,不需要这些默认行为。比如,我们提交表单希望ajax 异步发送到服务器,不需要form 的默认事件提交跳转行为。
一句话说就是 html 元素自带的行为。
阻止默认行为
1. 使用event.preventDefault()
方法:
这是阻止事件默认行为最常用的方法之一。当事件被触发时,可以调用event.preventDefault()
方法来阻止浏览器执行其默认行为。例如,在单击链接时,可以通过以下方式阻止浏览器跳转到链接的URL页面:
document.querySelector('a').addEventListener('click', function(event) {
event.preventDefault();
});
2. 使用return false
:
在某些情况下,可以在事件处理程序中使用return false
来阻止事件默认行为。这种方式通常用于内联事件处理程序,例如onclick
属性。例如,以下代码将阻止单击链接时的默认行为:
注意:如果写在 jQuery 中,能够同时阻止默认行为和阻止冒泡。
<a href="#" onclick="return false;">点击我不会跳转</a>
3. 使用event.returnValue
属性:
在旧版本的IE浏览器中,可以使用event.returnValue
属性来阻止事件默认行为(现在很多浏览器也支持)。将event.returnValue
设置为false
可以阻止默认行为的执行。例如:
document.querySelector('a').attachEvent('onclick', function(event) {
event.returnValue = false;
});
4. 使用event.stopPropagation()
方法(仅阻止事件传播):
阻止事件传播。 event.stopPropagation()
方法用于阻止事件的进一步传播,而不是直接阻止事件的默认行为。它可以用于停止事件冒泡到父元素或其他事件监听器。例如:
document.querySelector('.child').addEventListener('click', function(event) {
event.stopPropagation();
});
5. 使用 cancelable 属性
查看状态。 该属性表示事件是否可以取消,返回一个布尔值。该属性是只读属性。true 表示可以取消。
<a id="test" href="https://www.baidu.com">百度</a>
<script>
let test = document.getElementById('test');
test.onclick = function (e) {
// 可以取消事件的默认行为
console.log(e.cancelable)
}
</script>
6. defaultPrevented 方法
查看状态。 也是 event的一个属性,表示默认行为是否被阻止,true 表示被阻止。
<a id="test" href="https://www.baidu.com">百度</a>
<script>
let test = document.getElementById('test');
test.onclick = function (e) {
e.preventDefault()
console.log(e.defaultPrevented) // true
}
</script>
需要注意的是,不同的事件有不同的默认行为,因此阻止默认行为的方法可能会有所不同。一些常见的事件默认行为包括表单提交、链接点击、表单元素的键盘输入等。
总结起来,使用event.preventDefault()
方法是最常见和推荐的阻止事件默认行为的方法。其他方法如return false
和event.returnValue
属性在特定情况下可能有用,但不如event.preventDefault()
方法灵活和通用。另外,event.stopPropagation()
方法用于阻止事件传播,而不是直接阻止事件的默认行为。
事件冒泡
事件冒泡是指当⼀个⼦元素触发了某个事件后,事件会⼀直冒泡到它的⽗元素,直到到达⽂档根节点。
阻止事件冒泡
event.stopPropagation()
document.getElementById("child").addEventListener("click", function (event) {
// 阻⽌事件冒泡
event.stopPropagation();
});
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: