div A百分百遮盖了 div B, 怎么 样保证,A与 B的事件都能触发
A是scroll事件
B是其它事件
pointer-event:none 在这个场景是没用处
divA添加和divB一样的事件,然后在divA的事件中调用divB注册的事件,前提是divA和divB的事件不存在一样的,比如click,如果有一样的,那就没法区分是要操作divA还是divB了。除非一样的事件有区间性,可以通过点击的clientX,clientY判断下点击区间,在divA的区间就触发divA需要的事件,否则触发divB的。
js触发事件可以参考下面文章
https://www.bbsmax.com/A/D854ynApdE/
https://blog.csdn.net/weixin_39703282/article/details/126345893
“Devil组”引证GPT后的撰写:
如果div A完全覆盖了div B,并且div A的scroll事件必须被触发,同时div B中的其他事件也需要被触发,可以尝试以下解决方案:
例如,你可以使用以下代码片段:
document.querySelector('#divA').addEventListener('scroll', function(event) {
var divB = document.querySelector('#divB');
var eventToTrigger = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
divB.dispatchEvent(eventToTrigger);
});
在这个代码片段中,我们通过addEventListener为div A添加了一个scroll事件监听器。在事件处理程序中,我们首先获取到了div B的元素,然后使用new MouseEvent创建了一个模拟的click事件。最后,我们通过dispatchEvent方法在div B上触发了这个模拟的click事件。
使用CSS样式
你可以尝试使用CSS样式来改变div A和div B之间的叠加关系。例如,你可以将div A的z-index设置为-1,将div B的z-index设置为1,使得div B处于div A下方,并且可以被点击。例如:
#divA {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: scroll;
z-index: -1;
}
#divB {
position: relative;
z-index: 1;
}
在这个代码片段中,我们使用了position和z-index属性来控制div A和div B之间的层次关系。div A的z-index被设置为-1,使得它处于所有其他元素的下方。div B的z-index被设置为1,使得它处于所有其他元素的上方,并且可以被点击。
总之,这两种方法都可以在div A覆盖了div B的情况下,保证div A的scroll事件和div B的其他事件都可以被触发。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以通过Vue的事件修饰符 .native 来实现穿透上层DOM并触发底层DOM的事件。例如,在你的例子中,你可以将事件监听器绑定到底层的DOM元素B,然后使用 .native 修饰符将其绑定到上层DOM元素A的相应事件上。
下面是一个示例代码:
<div class="a" @scroll.native="onScroll">
<div class="b" @click.native="onClick"></div>
</div>
<script>
export default {
methods: {
onScroll() {
console.log('Scroll event triggered');
},
onClick() {
console.log('Click event triggered');
}
}
}
</script>
在这个例子中,当你在DIV A上滚动时,会触发 onScroll 方法。当你在DIV B上单击时,会触发 onClick 方法。由于使用了 .native 修饰符,事件监听器被绑定到了底层的DOM元素B上,并可以穿透上层DOM元素A来触发事件。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!