当前位置: 首页 > news >正文

做刷网站怎么赚钱外贸网站做流量

做刷网站怎么赚钱,外贸网站做流量,江苏网站建设哪家有,从头建设个人网站步骤事件捕获vs事件冒泡 拿点击事件举例子,点击dom树的某个目标节点: 事件捕获:从根节点到目标节点扩散事件冒泡:从目标节点到根节点扩散 扩散就是说,途中的节点,相应的点击事件都会被触发 但是,只…

事件捕获vs事件冒泡

  • 拿点击事件举例子,点击dom树的某个目标节点:
    • 事件捕获:从根节点到目标节点扩散
    • 事件冒泡:从目标节点到根节点扩散
  • 扩散就是说,途中的节点,相应的点击事件都会被触发
    但是,只能,拦截其中一个方向,也就是,要么,在捕获阶段拦截,要么在冒泡阶段拦截。
    target.addEventListener(eventType,hander,useCapture);第三个参数,useCapture,是否在捕获阶段触发。true就是在捕获阶段触发,false就是在冒泡极端触发
<body><div class="parent"><div class="child1">child1<div class="grandson1">grandson1</div></div><div class="child2">child2</div></div>
</body>
<script>let child1=document.getElementsByClassName('child1')[0];let grandson1=document.getElementsByClassName('grandson1')[0];child1.addEventListener('click',function(event){console.log(this,event.target)})grandson1.addEventListener('click',function(event){console.log('grandson1',event,this)})
</script>

只简单分析dom对象
在这里插入图片描述
假设点击,grandson1,捕获阶段,就是从parent->child1->grandson1;冒泡阶段,就是grandson1->child1->parent
这三个节点,要么,你在捕获阶段监听,

    child1.addEventListener('click',function(event){console.log(this,event.target)}true)

要么在,冒泡阶段监听

    child1.addEventListener('click',function(event){console.log(this,event.target)})

事件委托

其实就是把某个元素的事件,委托给祖先元素。
在这里插入图片描述
就比如,child1下面有很多节点,如果对每个节点都监听click事件的化,会造成资源浪费,代码也冗余,所以一般可以,在冒泡阶段拦截,用event.target获取点击的元素。

    let child1=document.getElementsByClassName('child1')[0];let grandson1=document.getElementsByClassName('grandson1')[0];child1.addEventListener('click',function(event){let t=event.targetif(t===this){console.log('clicked child1,noting to do');return;}// 有可能grandson里面还有元素,业务上一般需要,获取grandson这一层while(t&&t!==this){if(t.parentNode===this){break}t=t.parentNode;}// do something...console.log(t.innerText,'triggered')});
  • 为什么要对t===this做判断?用户可能点击的是代理层,也就是child1;
  • 为什么要while,因为有可能grandsonN中有其他子元素,但一般我们需要获取的是grandsonN这一层的信息,所以需要循环到gransonN这一层
  • 为什么要用t=event.target,你是改不了event.target滴~

stopPropagation vs preventDefault

区别
stopPropagation阻止冒泡事件
preventDefault阻止默认事件。e.g. 点击a标签会跳转到href,点击form buttom会提交表单

    <div class="parent"><div class="child1">child1<div class="grandson1">grandson1</div></div><div class="child2">child2</div></div>
    let child1=document.getElementsByClassName('child1')[0];let grandson1=document.getElementsByClassName('grandson1')[0];let parent=document.getElementsByClassName('parent')[0];child1.addEventListener('click',function(event){let t=event.targetif(t===this){console.log('clicked child1,noting to do');return;}// 有可能grandson里面还有元素,业务上一般需要,获取grandson这一层while(t&&t!==this){if(t.parentNode===this){break}t=t.parentNode;}// do something...console.log(t.innerText,'triggered');console.log("current target",event.currentTarget);event.stopPropagation(); //  preventDefault是拦截不住的,因为冒泡不是默认事件console.log("stopped propagations") // 停止冒泡,不会往上传到parent了});parent.addEventListener('click',function(event){console.log("on parent click")})

pointer-event

css有一个属性是pointer-events 控制鼠标事件
某个元素设置成pointer-events:none,那么元素不会响应鼠标事件,显然,在上面例子中,如果我把 grandson1的样式设置成这个,点击grandson1 不会输出on grandson1 click但是,会输出on child1 click,on parent click,也就是只是当前元素,不会相应鼠标事件而已(click,mouseover…),但是事件还是会扩散。如果设置为auto,那就相当于没有设置pointer-events这个属性,正常触发。

    <div class="parent"><div class="child1">child1<div class="grandson1 disabled">grandson1</div></div><div class="child2">child2</div></div>
    .disabled{pointer-events: auto;/* cursor只是改变了样式,还是会触发事件的 *//* cursor:not-allowed;  */}
    let child1=document.getElementsByClassName('child1')[0];let grandson1=document.getElementsByClassName('grandson1')[0];let parent=document.getElementsByClassName('parent')[0];grandson1.addEventListener('click',function(event){console.log('on grandson1 click') });child1.addEventListener('click',function(event){console.log('on child1 click')});parent.addEventListener('click',function(event){console.log("on parent click")})

输出:
在这里插入图片描述

http://www.yayakq.cn/news/194195/

相关文章:

  • 荆州网站建设多少钱网站的关键词挖掘方式
  • 做建筑效果图最好的网站怎样免费建立自己网站
  • 个人博客网站html模板天气预报权威发布
  • win2012r2 建设网站昆明手机网站建设
  • 如何做一个企业的网站做外贸需要什么网站
  • 天津网站建设开发维护镇江详情设计
  • 什么网站系统做的最好花都电子商务网站建设
  • 网站用户体验优化python网站开发详细步骤
  • 怎么才能注册网站中国商标网官网入口
  • 潍坊免费网站制作福州网站建设印秀
  • 合肥网站建设设计微商城网站建设报价
  • 多语言版本的网站网站页面大小优化怎么做
  • 哈尔滨建设局网站网站建设网站维护
  • 做儿童交互网站哈尔滨房地产网站建设
  • 如何来建设网站app开发公司软件开发公司
  • 做网站模块罗浮视窗网站建设
  • 大地资源影视免费观看seo顾问服务咨询
  • div网站模板区块链外包开发
  • 体育类网站模板wordpress如何使用一个的模板
  • 东莞企业制作网站平台建设包括哪些方面
  • 克隆网站到wordpress修改百度seo点击软件
  • iis网站怎么做域名绑定衡水网站设计
  • 建设网站赚钱的方法商城网站制作教程
  • 现在还有没有做任务的网站个人做健康网站好吗
  • 企业 办公 网站模板下载手机端网站建设方案
  • 旧笔记本 做网站重庆门户网
  • 网站模板手机宣传软文是什么
  • 华为企业网站规划建设方案网站接入服务单位
  • 建材城电商网站建设WordPress报表模板
  • 网站制作属于什么行业电子商务网站建设收获