小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如图所示 我做了一个弹窗 我目标是点击黑色背景执行一个方法关闭这个弹窗 但是点击上面的框内容的时候也会执行这个方法请问怎么能过滤掉这个事件啊?
10 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
用 catchtap 就行了 可以防止冒泡
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。譬如把内层的bindtap改为catchtap
bind
catch
最外层控件简称为A控件:
target代表触发事件的源控件,如果阴影部分是只属于A控件的,那么点击阴影部分,这时源控件就是A控件,当然能从event.target.dataset中获取到源控件(即A控件)的自定义属性(因为你定义了);
点其他地方肯定会点到A控件的子控件(即其他控件)里面去,那源控件肯定就不是A控件,那event.target.dataset中肯定获取不到数据(因为其他控件你没有设置自定义属性).
这个问题,只要根据event.target.dataset中能否获取A控件自定义属性,就可以判断触发事件的源控件是否是A控件,就可以做出不同处理
是的 center-v 是包在里面的 最外层的是整体弹窗 用isshow控制显示隐藏
最外层的控件是包含全屏吗?center-v1是弹窗吗?
b2,跟center-v1是什么?
都试过了都不能获取区别
e.target,target代表源控件
我加了 data-id= 发现 点击日历的时候 也会有这个 点击选取时间那些都会带过去 那个 data-id='window' event.currentTarget 判断不出来
data-id=
'window' event.currentTarget 判断不出来
<view class=
"b2 "
'window'
hidden=
"{{isshow}}"
bindtap=
"windowclick"
>
<!-- <view class=
"false"
> -->
"center-v1"
"w-80"
"time-title text-c font-s1"
选取时间
</view>
添加一个id或自定义属性作为标志,点击时判断一下e.target中有没有这个标志
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
用 catchtap 就行了 可以防止冒泡
bind
事件绑定不会阻止冒泡事件向上冒泡,catch
事件绑定可以阻止冒泡事件向上冒泡。譬如把内层的bindtap改为catchtap最外层控件简称为A控件:
target代表触发事件的源控件,如果阴影部分是只属于A控件的,那么点击阴影部分,这时源控件就是A控件,当然能从event.target.dataset中获取到源控件(即A控件)的自定义属性(因为你定义了);
点其他地方肯定会点到A控件的子控件(即其他控件)里面去,那源控件肯定就不是A控件,那event.target.dataset中肯定获取不到数据(因为其他控件你没有设置自定义属性).
这个问题,只要根据event.target.dataset中能否获取A控件自定义属性,就可以判断触发事件的源控件是否是A控件,就可以做出不同处理
是的 center-v 是包在里面的 最外层的是整体弹窗 用isshow控制显示隐藏
最外层的控件是包含全屏吗?center-v1是弹窗吗?
b2,跟center-v1是什么?
都试过了都不能获取区别
e.target,target代表源控件
我加了 data-id= 发现 点击日历的时候 也会有这个 点击选取时间那些都会带过去 那个
data-id=
'window' event.currentTarget 判断不出来
<view class=
"b2 "
data-id=
'window'
hidden=
"{{isshow}}"
bindtap=
"windowclick"
>
<!-- <view class=
"b2 "
hidden=
"false"
> -->
<view class=
"center-v1"
>
<view class=
"w-80"
>
<view class=
"time-title text-c font-s1"
>
选取时间
</view>
添加一个id或自定义属性作为标志,点击时判断一下e.target中有没有这个标志