如题,有两个 div,用 absolute 排版,重叠在一起,两层各自绑定了一些响应事件,想要做到点击的时候同时触发两个 div 的事件,应该怎么操作?
百度了一下说是设置 style="pointer-events:none;" 试了之后发现,加上以后确实能穿透下层了,但是上层的点击事件直接被忽略了。有能同时触发两个的方法吗?
1
ch2 2021-04-23 01:58:17 +08:00 via iPhone
事件冒泡机制,只能被一个处理
|
2
OHyn 2021-04-23 02:06:16 +08:00
用 js 去触发吧,dispatchEvent 。
ps:为啥要做的这么别扭。。。 |
3
Blacate 2021-04-23 02:34:55 +08:00 via iPhone 4
听起来像诱导用户的……
|
4
LeeReamond OP |
5
LeeReamond OP @Blacate 另外诱导用户什么的,js 都在沙箱里运行,又能做得到什么呢。。
|
6
Kylin30 2021-04-23 05:12:10 +08:00
@LeeReamond 有啊,透明层,点一下出一个广告,再点一下才出真实内容,有的网站还盖 2,3 层呢。
|
7
proxychains 2021-04-23 06:11:47 +08:00
@Kylin30 有些盗版视频网站好多这种广告.透明的播放按钮,点了播放在新 tab 弹出广告,播放按钮才能播放.
|
8
gouflv 2021-04-23 07:34:40 +08:00 via iPhone 1
用 vue 做的开发,思路总有一些天马行空的
|
9
Blacate 2021-04-23 08:45:25 +08:00 via iPhone
@LeeReamond 听起来通过事件冒泡和事件代理就可以实现
|
10
cslive 2021-04-23 08:52:36 +08:00
建议去各大小说网站学学,停掉广告插件,学会各种奇淫技巧
|
11
xuanbg 2021-04-23 08:55:00 +08:00
同时是不可能同时的,交互分两步,就得点两下。
|
12
yunyuyuan 2021-04-23 09:01:37 +08:00
自己 dispatch
|
13
DOLLOR 2021-04-23 09:04:45 +08:00
上一层监听 mousedown 事件,触发后立刻把上层设为“pointer-events:none”,
下一层监听 mouseup 事件,触发后后撤回上层的“pointer-events:none”。 纯口述,没试过。 |
14
vivipure 2021-04-23 09:06:21 +08:00
a.b 两个 div, 成为父子关系就行吧。 你点击子级节点, 父级也会触发的
|
15
no1xsyzy 2021-04-23 09:19:24 +08:00
@LeeReamond 你直接把两个 div 嵌套起来啊
不添加 event.stopPropagation 或者 内层 .stop 或者 外层 .self 的话会都触发啊 https://jsfiddle.net/s93aLgyz/0/ |
16
chenmobuys 2021-04-23 09:30:23 +08:00
这是要点击广告吗
|
17
cxe2v 2021-04-23 09:31:36 +08:00
都用上 vue 了还不简单,全覆盖那个的处理函数不要绑在元素上,你放在一个 computed 里也好,放在 watch 里也行,在子元素被点击的时候,更新一下这个被关注的属性,就触发了你想要触发的方法
|
19
luogege 2021-04-23 09:46:41 +08:00
A 方法里面放 B(),这么简单的问题,咋都这么绕呢
|
22
clf 2021-04-23 10:07:07 +08:00
这个又不是叠在一起的 div 。按你的描述:点到按钮了执行按钮逻辑,点到按钮外的地方执行失焦逻辑。没必要做成后者覆盖前者。
|
23
SakuraKuma 2021-04-23 10:14:00 +08:00
这, 不是用 vue 吗..
aboveClickEvent(){xxxx; this.belowClickEvent()} // 直接显式调用不就好了. belowClickEvent(){xxxx;} 除非你两 div 还是动态上下的.. |
24
registerrr 2021-04-23 11:02:46 +08:00
做父子层级吧?子层级作为直接被点击的元素,子层级被点击后去触发父层级的点击事件
|
25
wednesdayco 2021-04-23 11:28:37 +08:00
上个订阅者不就好了 互相通知呗
|
26
darknoll 2021-04-23 11:49:30 +08:00
每个 div 响应的时候把这两个 div 的事件都执行了不就完事了
|
27
zhuweiyou 2021-04-23 11:50:14 +08:00
既然是重叠的, 上面的 DIV 被点击, 两个处理函数都调用一下就行了...
|
28
cereschen 2021-04-23 13:32:37 +08:00
如果你不需要处理 event 那么实现的方式太多了
需要的话就用 dispatchEvent |
29
chaoFanExcellent 2021-04-23 21:27:58 +08:00
你执行 A,把 B 方法调用下不就行了,又不是真的要点击。
|