event.stopPropagation()与event.pr
2020-05-27 本文已影响0人
秀萝卜
今天来看看前端的冒泡和事件默认事件如何处理
1.event.stopPropagation()方法
阻止事件冒泡,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开,
2.event.preventDefault()方法
阻止默认事件,调用此方法,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素;
3.return false ;
同时阻止事件冒泡和阻止默认事件;可以理解为return false就等于同时调用了event.stopPropagation()和event.preventDefault()
4.demo
这是html代码,div里面套了一个a标签,连接到百度
<div class="box1">
<a href="http://www.baidu.com" target="_blank"></a>
</div>
第一种 什么也不做
$(".box1").click(function(){
console.log("1")//不阻止事件冒泡会打印1,页面跳转;
});
第二种 阻止冒泡
$(".box1 a").click(function(event){
event.stopPropagation();
//不会打印1,但是页面会跳转;
});
$(".box1").click(function(){
console.log("1")
});
第三种 阻止默认事件event.preventDefault();
$(".box1").click(function(){
console.log("1");
});
$(".box1 a").click(function(event){
event.preventDefault();
//页面不会跳转,但是会打印出1,
});
第四种 阻止冒泡event.stopPropagation();阻止默认事件event.preventDefault()
$(".box1").click(function(){
console.log("1")
});
$(".box1 a").click(function(event){
event.stopPropagation();
//阻止默认事件
event.preventDefault()
//页面不会跳转,也不会打印出1
})
第五种 return false
$(".box1").click(function(){
console.log("1")
});
$(".box1 a").click(function(event){
return false;
//页面不会跳转,也不会打印出1,等于同时调用了event.stopPropagation()
//和event.preventDefault()
});
第六种 return
$(".box1").click(function(){
console.log("1")
});
$(".box1 a").click(function(event){
return;
//页面会跳转,也会打印出1。return的作用是本代码块的代码不再向下执行
});
附赠demo
<!DOCTYPE html>
<html>
<head>
<title>111</title>
</head>
<body>
<div class="box1">
<a href="http://www.baidu.com" target="_blank">111111111</a>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(".box1").click(function(){
console.log("1")
});
$(".box1 a").click(function(event){
return false
//页面不会跳转,也不会打印出1,等于同时调用了event.stopPropagation()
//和event.preventDefault()
});
</script>
</body>
</html>