1.prevent:阻止默认事件(常用)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件修饰符</title>
<!-- 准备好一个容器 -->
<!--
1.prevent:阻止默认事件(常用)
2.
-->
<div id="root">
<h2>你好欢迎光临{{name}}</h2>
<a href="https://www.msn" @click.prevent="showInfo">点击有奖金</a>
</div>
</head>
<body>
<script type="text/javascript">
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
name:'终会为一'
},
//配置点击事件
methods:{
showInfo(){
alert('麻正斌')
}
}
})
</script>
</body>
</html>
在你的代码中,你尝试使用 @click.prevent
来阻止链接的默认行为。然而,它没有成功阻止事件跳转的原因可能是因为你在一个 <div>
标签内直接放置了一个 <a>
标签。
根据 HTML 规范,<div>
标签不应该直接包含块级元素(如 <a>
)。所以当你点击链接时,浏览器会忽略 prevent
修饰符并继续执行默认行为,即跳转到 https://www.msn
。
要解决这个问题,你可以将 <a>
标签放置在一个容器元素(如 <p>
或 <span>
)中,然后将 @click.prevent
应用于容器元素。这样就能够成功阻止事件的默认行为。
以下是修改后的代码示例:
<div id="root">
<h2>你好欢迎光临{{name}}</h2>
<p @click.prevent="showInfo">
<a href="https://www.msn">点击有奖金</a>
</p>
</div>
通过将 <a>
标签放置在 <p>
标签内,@click.prevent
将应用于容器元素,从而成功阻止默认的链接跳转行为。
2.stop:阻止事件冒泡
3.once:事件只能触发一次(常用):
4.capture:使用事件的捕获模式
5.self:只有event.target是当前操作的元素才是除法事件
6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件修饰符</title>
<script src="../js/vue.js" type="text/javascript"></script>
<style>
*{
margin-top: 20px;
}
.demo1{
height: 50px;
background-color: skyblue;
}
</style>
<!-- 准备好一个容器 -->
<!--
1.prevent:阻止默认事件(常用)
2.stop:阻止事件冒泡
3.once:事件只能触发一次(常用):
4.capture:使用事件的捕获模式
5.self:只有event.target是当前操作的元素才是除法事件
6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕
-->
<div id="root">
<h2>你好欢迎光临{{name}}</h2>
<a href="https://www.msn" @click.prevent="showInfo">点击有奖金</a>
</div>
<div class="demo1" @click="showInfo">
<button @click.stop="showInfo">点击有提示信息</button>
</div>
</head>
<body>
<script type="text/javascript">
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
name:'终会为一'
},
//配置点击事件
methods:{
showInfo(){
alert('麻正斌')
}
}
})
</script>
</body>
</html>