通过div单击底层元素

南笙酒味 提交于 2019-12-07 18:46:29

我有一个具有background:transparentborderdiv 。 在这个div ,我还有更多元素。

当前,当我在overlay div之外单击时,我可以单击基础元素。 但是,当直接单击overlay div时,我无法单击基础元素。

我希望能够单击此div以便可以单击基础元素。


#1楼

我要添加此答案,因为我在这里没有看到完整的答案。 我能够使用elementFromPoint做到这一点。 所以基本上:

  • 将点击附加到您要点击的div
  • 把它藏起来
  • 确定指针在哪个元素上
  • 点击那里的元素。
var range-selector= $("")
    .css("position", "absolute").addClass("range-selector")
    .appendTo("")
    .click(function(e) {
        _range-selector.hide();

        $(document.elementFromPoint(e.clientX,e.clientY)).trigger("click");
    });

就我而言,覆盖div是绝对定位的-我不确定这是否有所不同。 此功能至少适用于IE8 / 9,Safari浏览器和Firefox。


#2楼

我需要这样做,并决定采用以下路线:

$('.overlay').click(function(e){
    var left = $(window).scrollLeft();
    var top = $(window).scrollTop();

    //hide the overlay for now so the document can find the underlying elements
    $(this).css('display','none');
    //use the current scroll position to deduct from the click position
    $(document.elementFromPoint(e.pageX-left, e.pageY-top)).click();
    //show the overlay again
    $(this).css('display','block');
});

#3楼

允许用户单击div到基础元素取决于浏览器。 所有现代浏览器(包括Firefox,Chrome,Safari和Opera)都可以理解pointer-events:none

对于IE,这取决于背景。 如果背景是透明的,则无需执行任何操作即可实现点击。 另一方面,对于诸如background:white; opacity:0; filter:Alpha(opacity=0);类的东西background:white; opacity:0; filter:Alpha(opacity=0); background:white; opacity:0; filter:Alpha(opacity=0); ,IE需要手动事件转发。

请参阅JSFiddle测试CanIUse指针事件


#4楼

您可以放置​​AP覆盖层,例如...

#overlay {
  position: absolute;
  top: -79px;
  left: -60px;
  height: 80px;
  width: 380px;
  z-index: 2;
  background: url(fake.gif);
}
<div id="overlay"></div>

只是把它放在你不想要的地方,即喜欢。 全部适用。


#5楼

  1. 隐藏元素
  2. 确定光标坐标
  3. 在这些坐标上获取元素
  4. 触发元素点击
  5. 再次显示叠加元素
$('#elementontop).click(function (e) {
        $('#elementontop).hide();
        $(document.elementFromPoint(e.clientX, e.clientY)).trigger("click");
        $('#elementontop').show();
    });
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!