我有一个具有背景的div:透明,以及边框。在这个div下面,我有更多的元素。
目前,当我在覆盖div外部单击时,我可以单击底层元素。但是,当我直接单击覆盖div时,我无法单击底层元素。
我希望能够单击这个div,以便单击底层元素。
我有一个具有背景的div:透明,以及边框。在这个div下面,我有更多的元素。
目前,当我在覆盖div外部单击时,我可以单击底层元素。但是,当我直接单击覆盖div时,我无法单击底层元素。
我希望能够单击这个div,以便单击底层元素。
当前回答
另一个尝试(情境)的想法是:
将所需内容放入div中;将非点击覆盖放在整个页面上,z索引更高,制作原始div的另一个裁剪副本overlay和abs将复制div放置在与原始内容相同的位置,您希望使用更高的z索引进行单击?
有什么想法吗?
其他回答
我目前使用的是画布演讲气球。但是,由于带有指针的气球被包装在一个div中,因此它下面的一些链接不再可单击。在这种情况下,我不能使用extjs。参见我的演讲气球教程需要HTML5的基本示例
因此,我决定从阵列中的气球内部收集所有链接坐标。
var clickarray=[];
function getcoo(thatdiv){
thatdiv.find(".link").each(function(){
var offset=$(this).offset();
clickarray.unshift([(offset.left),
(offset.top),
(offset.left+$(this).width()),
(offset.top+$(this).height()),
($(this).attr('name')),
1]);
});
}
我在每个(新的)气球上调用这个函数。它获取link.class的左/上角和右/下角的坐标-此外,如果有人在该坐标中单击,该怎么做的name属性,我喜欢设置1,这意味着它没有被单击jet。然后将此阵列取消移动到单击阵列。你也可以使用push。
要使用该阵列,请执行以下操作:
$("body").click(function(event){
event.preventDefault();//if it is a a-tag
var x=event.pageX;
var y=event.pageY;
var job="";
for(var i in clickarray){
if(x>=clickarray[i][0] && x<=clickarray[i][2] && y>=clickarray[i][1] && y<=clickarray[i][3] && clickarray[i][5]==1){
job=clickarray[i][4];
clickarray[i][5]=0;//set to allready clicked
break;
}
}
if(job.length>0){
// --do some thing with the job --
}
});
此函数用于证明主体单击事件的坐标或是否已单击该事件,并返回name属性。我认为没有必要再深入一点,但你知道这并没有那么复杂。希望在我身边。。。
我认为event.stopPropagation();这里也应提及。将此添加到按钮的单击功能。
防止事件在DOM树中冒泡,防止任何父处理程序收到事件通知。
我认为您可以考虑更改标记。如果我没有错,您希望在文档上方放置一个不可见的层,并且您的不可见标记可能位于文档图像之前(这是正确的吗?)。
相反,我建议您将不可见图像放在文档图像之后,但将位置更改为绝对位置。
请注意,您需要一个父元素来具有position:relative,然后您就可以使用这个想法了。否则,绝对层将仅放置在左上角。
绝对位置元素相对于第一个父元素定位具有非静态位置的元素。如果没有找到这样的元素,则包含块为html
希望这有帮助。有关CSS定位的更多信息,请参阅此处。
它不是那样工作的。解决方法是根据每个元素所占据的区域手动检查鼠标点击的坐标。
元素所占的面积可由1找到。获取元素相对于页面左上角的位置,以及2。宽度和高度。像jQuery这样的库使得这非常简单,尽管它可以用普通的js实现。在文档对象上添加mousemove的事件处理程序将从页面的顶部和左侧连续更新鼠标位置。确定鼠标是否在任何给定对象上包括检查鼠标位置是否在元素的左、右、上和下边缘之间。
更简单的方法是使用数据URI内联透明背景图像,如下所示:
.click-through {
pointer-events: none;
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
}