1.2019独角兽企业重金招聘Python工程师标准
2.场景:最近开发微信小程序时候遇到了点击页面中的元素,js捕捉点击事件,并获取该元素的一些属性(比如我自定义了一个author="李一博"),那么如何快速获取这个属性呢?其实首先要改变一下写法,用【data-】开头,元素属性即为data-author="李一博",并且绑定一个点击事件,bindtap='getAuthor'。
3.接下来重点来了js部分
4.getAuthor:function(e){
5.console.log(e.currentTarget.dataset.author);//打印李一博
6.//看一下e对象的值
7.console.log(e);//参考下图
8.}
9.
10.(图片看不清双击看大图osChina这个编辑器我真用不惯)
11.注意:里面有两个对象存在我们要获取的内容一个是target一个是currentTarget区别简单来说是
e.target指向触发事件监听的对象。e.currentTarget指向添加监听事件的对象。12.详细原因如下:(参考自简书)
13.在DOM事件对象中有两个属性总是时不时的困扰我,就是target和currentTarget,有时候很迷惑分不清两者的区别,因此有必要把这两个属性好好梳理一下,加深理解,以便日后的查询。MDN中对target的解释为,一个触发事件的对象的引用,当事件处理程序在事件的冒泡或捕获阶段被调用时。而对于currentTarget,它指的是当事件遍历DOM时,标识事件的当前目标。它总是引用事件处理程序附加到的元素,而不是event.target,它标识事件发生的元素。举个例子来说明。
事件冒泡阶段!DOCTYPEhtmlhtmlheadmetacharset="utf-8"titleJSBin/title/headbodyullihello1/lilihello2/lilihello3/lilihello4/li/ulscriptletul=document.querySelectorAll('ul')[0]letaLi=document.querySelectorAll('li')ul.addEventListener('click',function(e){letoLi1=e.targetletoLi2=e.currentTargetconsole.log(oLi1)//被点击的liconsole.log(oLi2)//ulconsole.og(oLi1===oLi2)//false})/script/body/html14.我们知道,e.target可以用来实现事件委托,该原理是通过事件冒泡(或者事件捕获)给父元素添加事件监听,e.target指向引发触发事件的元素,如上述的例子中,e.target指向用户点击的li,由于事件冒泡,li的点击事件冒泡到了ul上,通过给ul添加监听事件而达到了给每一个li添加监听事件的效果,而e.currentTarget指向的是给绑定事件监听的那个对象,即ul,从这里可以发现,e.currentTarget===this返回true,而e.target===this返回false。e.currenttarget和e.target是不相等的。
15.注意,在jQuery提供的on方法中,e.currentTarget与该方法接收的第二个参数有关,根据jQuery的文档描述
16.如果省略selector或者是null,那么事件处理程序被称为直接事件或者直接绑定事件。每次选中的元素触发事件时,就会执行处理程序,不管它直接绑定在元素上,还是从后代(内部)元素冒泡到该元素的当提供selector参数时,事件处理程序是指为委派事件(事件委托或事件代理)。事件不会在直接绑定的元素上触发,但当selector参数选择器匹配到后代(内部元素)的时候,事件处理函数才会被触发。jQuery会从eventtarget开始向上层元素(例如,由最内层元素到最外层元素)开始冒泡,并且在传播路径上所有绑定了相同事件的元素若满足匹配的选择器,那么这些元素上的事件也会被触发。
!DOCTYPEhtmlhtmlheadscriptsrc="//code.jquery.com/jquery-1.9.1.min.js"/scriptmetacharset="utf-8"titleJSBin/titlestyleli{padding:5px;border:1pxsolidred;}span{border:1pxsolid#000;}/style/headbodyullispanhello1/span/lilispanhello1/span/lilispanhello1/span/lilispanhello1/span/li/ulscriptletul=document.querySelectorAll('ul')[0]letaLi=document.querySelectorAll('li')$('ul').on('click','li',function(e){console.log(e.target)//被点击的元素console.log(e.currentTarget)//liconsole.log(e.currentTarget===this)//true})/script/body/html17.当li中含有子元素的时候,e.target指的是触发事件的元素,可能是span也可能是li,此时的e.currentTarget指的是selector那个参数,也就是本例中的li。如果省略selector参数,那么它和addEventListener中e.target和e.currentTarget是一致的。
事件目标阶段18.我们知道,在DOM事件流中分为几个不同的阶段,如图
19.上述例子是事件冒泡阶段,e.currenttarget和e.target是不相等的,但是在事件的目标阶段,e.currenttarget和e.target是相等的。
!DOCTYPEhtmlhtmlheadmetacharset="utf-8"titleJSBin/title/headbodyullihello1/lilihello2/lilihello3/lilihello4/li/ulscriptletul=document.querySelectorAll('ul')[0]letaLi=document.querySelectorAll('li')for(leti=0;iaLi.length;i++){aLi[i].addEventListener('click',function(e){letoLi1=e.targetletoLi2=e.currentTargetconsole.log(oLi1)//liconsole.log(oLi2)//liconsole.og(oLi1===oLi2)//true})}/script/body/html20.在本例中,事件的目标阶段即li,由于e.currentTarget始终指向添加监听事件的那个对象,即aLi[i],也就是HTML中的li,而e.target指向触发事件监听的那个对象,也是li,因此e.target和e.currentTarget相等,同时也和this相等。
微信小程序常用标签-微信小程序根据点击事件获取被点击元素的属性(常用)-小程序标签
浏览量:1843
时间:
来源:weixin_33788244
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。












