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>
上一篇下一篇

猜你喜欢

热点阅读