编程知识 cdmana.com

vue之事件修饰符( .stop、.prevent、 .capture 、.self)以及.stop与.self的区别

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<script src="vue.js" type="text/javascript"></script>
		<style type="text/css">
			.inner {
				height: 150px;
				background-color: darkcyan;
			}

			.outer {
				padding: 40px;
				background: red;
			}
		</style>
	</head>

	<body>
		<div id="app">


			<!-- 使用  .stop  阻止冒泡 -->
			<!-- <div class="inner" @click="div1Handler">
				<input type="button" value="点击" @click="btnHandler" />
			</div> -->


			<!-- 使用  .provent 阻止默认行为 -->
			<!-- <a href="http://baidu.com" @click.prevent="linkClick">百度一下</a> -->

			<!--使用  .capture  实现捕获触发机制  -->
			<!-- 	<div class="inner" @click.capture="div1Handler">
				<input type="button" value="点击" @click="btnHandler" />
			</div> -->

			<!-- 使用  .self  實現只有点击只有点击当前元素时候,才会触发事件处理函数 -->
			<!-- 		<div class="inner" @click.self="div1Handler">
				<input type="button" value="点击" @click="btnHandler" />
			</div> -->

			<!-- 使用  .once  只触发一次事件处理函数 -->
			<!-- 即按照下面的例子,第一次低级不跳转,第二次才跳转 -->
			<!-- <a href="http://baidu.com" @click.prevent.once="linkClick">百度一下</a> -->

			<!-- 演示: .stop  和  .self  的区别 -->
			<!-- <div class="outer"  @click="div2Handler">
				<div class="inner" @click="div1Handler">
					<input type="button" value="点击" @click="btnHandler" />
				</div>
			</div>
			 -->
			<!-- .self只会阻止自己身上的冒泡,并不会真正阻止冒泡-->	
			<div class="outer" @click="div2Handler">
				<div class="inner" @click.self="div1Handler">
					<input type="button" value="点击" @click="btnHandler" />
				</div>
			</div>
			<!-- 触发了bt按钮的点击事件
				触发了outer div的点击事件-->


		</div>


		<script type="text/javascript">
			var vm = new Vue({
				el: '#app',
				data: {},
				methods: {
					div1Handler() {
						console.log('触发了inner div的点击事件');
					},
					div2Handler() {
						console.log('触发了outer div的点击事件');
					},
					btnHandler() {
						console.log('触发了bt按钮的点击事件');
					},
					linkClick() {
						console.log('触发了链接');
					}
				}
			})
		</script>

	</body>
</html>

版权声明
本文为[coderwcb]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/coderwcb/p/13962493.html

Scroll to Top