当鼠标按下时(模拟触摸屏幕的手指),我想在鼠标下方显示一张图片,当鼠标抬起时隐藏它,但是当我这样做时,我显示的图片会阻塞后续鼠标事件(特别是“点击”)在该图片下方的元素。顺便说一下,我正在使用jQuery。
我确定这与事件冒泡或传播有关,但我无法弄清楚。请给予任何指针。
请查看此帖子中的答案:
https://dev59.com/s3A65IYBdhLWcg3wsg2B#4839672
这似乎可以通过纯CSS跨浏览器方法实现您想要实现的目标。
pointer-events:none;
touch-action:none;
pointer-events: none
。不过有一个JS回退方案:http://www.vinylfox.com/forwarding-mouse-events-through-layers/。 - ProblemsOfSumitpointer-events: none;
到外部元素,您可以将pointer-events: auto;
应用于内部元素以捕获事件。 - BeatnikDudeBilly Moon,你的代码几乎是可以工作的。你只需要使用hide和show而不是css:
$('#finger').click(function(e){
evt = e || window.event;
// make finger disappear
$('#finger').hide(0);
// get element at point of click
starter = document.elementFromPoint(evt.clientX, evt.clientY);
// send click to element at finger point
$(starter).click();
// bring back the finger
$('#finger').show(0);
});
e
,因此evt = e || window.event
是多余的。 - Alex W这段代码没有经过测试,但基于我的一个可用脚本,应该是正确的。基本上,您需要让挡住视线的层消失一会儿,这样您就可以使用elementFromPoint方法,然后再让它重新出现。
$('.selector').click(function(e){
evt = e || window.event;
// make finger disappear
$('.finger').css({display:'none'});
// get element at point of click
starter = document.elementFromPoint(evt.clientX, evt.clientY);
// send click to element at finger point
$(starter).click();
// bring back the finger
$('.finger').css({display:''});
});
你可以做到这个
$(document).bind('mousedown mouseup', function() {
$('.finger').toggle();
});
position:absolute;
并使用z-index:-1;
。查看这个链接http://jsfiddle.net/2cSj4/4/ - Hussein
z-index
设为较低值,将其下方的父元素设为较高的z-index
- 您还需要给该父元素设置position: relative;
以使其正常工作。 - Shadow The Spring Wizard