JavaScript事件行为

js默认行为阻止

一.哪些默认行为要做阻止

1.a标签链接跳转

什么是默认行为?一个最简单的例子,我有一个a标签

<a href="https://www.baidu.com/" target="_blank">百度</a>

点击百度两个字就会打开百度页面,点击后链接地址跳转就是a标签的默认行为。


a在点击会触发click事件,我们只要在回调中加入事件阻止方法就可以阻止跳转发生:

<a href="https://www.baidu.com/" target="_blank" id="skip">百度</a>
var skip=document.getElementById("skip");skip.onclick=function(event){ event.preventDefault();};

再次点击百度,还会停留在当前页面,当然除了调用事件对象的阻止方法还可以用下面的处理:

skip.onclick=function(event){ return false;}

事件对象

事件对象常见属性和方法
事件对象属性方法
说明

e.target

返回触发事件的对象 -------标准

e.srcElement

返回触发事件的对象----非标准ie6-8使用

e.type

返回事件的类型 比如click mouseover 不要on

e.cancelBubble

该属性阻止冒泡 ------非标准 ie6-8 使用

e.oreventDefault()

该方法阻止默认事件 (默认行为)标准 比如不让链接跳转

e.returnValue

该属性 阻止默认事件(默认行为)非标准ie6-8使用 比如不让链接跳转

e.stopPropagation()

阻止冒泡 标准

var div = doucument.querySelector("div");
div.addEventListener('click',fn);
function fn (){
console.log(e.type);
}
//阻止默认行为(事件)让链接不跳转 让提交按钮不提交
var  a = document.querySelector('a')
a.addEventListener('click',function(e){
e.preventDefault();
})
//3. 传统的注册方式i、
a.onclick = function (){
//普通浏览器 e.preventDefault();
e.preventDefault();
//低版本浏览器ie678 returnValue 属性
e.returnValue ;
//
return false;//使用方法 return 后面的代码不执行了
alert(11) 空 

}

如何阻止冒泡

阻止事件冒泡的两种方式

事件冒泡:开始时有具体的元素接收,然后逐级向上传播到DOM最顶层节点。

事件冒泡本身有的特性:会带来的坏处,也会带俩好处,需要我们灵活掌握

阻止事件冒泡

标准写法:利用事件对象里面的stopPropagation()方法 stop停止 propagation传播

e.cancelBubble = true ; 非标准写法

阻止事件冒泡的兼容性解决方案

if( e && e.stopPropation){
e.stopPropation();
}else{
window.event.cancelBubble = true;
}

事件委托(代理、委派)

事件冒泡委托 委派
<ul>
  <li>知否知否</li>
  <li>知否知否</li>
  <li>知否知否</li>
  <li>知否知否</li>
  <li>知否知否</li>
</ul>
事件委托的原理

不是给每个子节点单独设置事件监听器,而是事件监听器设置在其夫节点上,然后利用冒泡原理影响设置每个子节点

案例:给ul 注册点击事件,然后利用事件对象的target来找到当前点击的li ,因为点击li 事件会冒泡带ul上 ul 有注册事件,就会触发事件监听器。

事件委托的作用

我们只操作了一次DOM,提高了程序的性能

  //事件委托的核心原理 :给父节点添加事件监听器
      var ul = document.querySelector("ul");
      ul.addEventListener("click", function () {
        alert("你猜对了");
      });
// e.target.style.backgroundColor = "pink";

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿康只想生活~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值