Javascript 如何触发jQuery中的click事件
全部: 我有两个,部分重叠,顶部一个有类“top”,底部一个有类“bottom”,我想做的是在单击重叠区域时触发两个onclick事件 我该怎么做 HTML类似于:Javascript 如何触发jQuery中的click事件,javascript,jquery,events,Javascript,Jquery,Events,全部: 我有两个,部分重叠,顶部一个有类“top”,底部一个有类“bottom”,我想做的是在单击重叠区域时触发两个onclick事件 我该怎么做 HTML类似于: .bottom{ 宽度:300px; 高度:200px; 位置:绝对位置; 背景色:番茄; 左:100px; 顶部:100px; 不透明度:0.5; } .顶{ 宽度:300px; 高度:200px; 位置:绝对位置; 背景色:浅海绿色; 左:200px; 顶部:200px; 不透明度:0.8; } 您没有提供代码,所以我也不会。
.bottom{
宽度:300px;
高度:200px;
位置:绝对位置;
背景色:番茄;
左:100px;
顶部:100px;
不透明度:0.5;
}
.顶{
宽度:300px;
高度:200px;
位置:绝对位置;
背景色:浅海绿色;
左:200px;
顶部:200px;
不透明度:0.8;
}
您没有提供代码,所以我也不会。但这里有一个开始思考的方法: 当您单击z索引较高的鼠标(注册单击的鼠标)时,请检查鼠标是否也在较低的鼠标的范围内。只需获取下部元素的偏移量(相对于视口)及其大小即可检查其面积
祝你好运 我为你创造了一个劫掠者- 为了解决这个问题,你必须在坐标上下功夫
// Binding click function
$(".bottom, .top").click(function(event){
// Getting bottom and top elements
var bottomElement = $(".bottom");
var topElement = $(".top");
// Getting co-ordinates of click
var x = event.pageX;
var y = event.pageY;
// Calculating bottom element co-ordinates
var bLeft = bottomElement.offset().left;
var bTop = bottomElement.offset().top;
var bRight = bottomElement.width() + bLeft;
var bBottom = bottomElement.height() + bTop;
// Calculating top element co-ordinates
var tLeft = topElement.offset().left;
var tTop = topElement.offset().top;
var tRight = topElement.width() + tLeft;
var tBottom = topElement.height() + tTop;
// Default value as false i.e. click was outside of both the elements
var clickedInsideTop = false;
var clickedInsideBottom = false;
// Check whether the click was inside bottom element
if(x >= bLeft && x <= bRight && y >= bTop && y <= bBottom) {
clickedInsideBottom = true;
}
// Check whether the click was inside top element
if(x >= tLeft && x <= tRight && y >= tTop && y <= tBottom) {
clickedInsideTop = true;
}
// If both conditions are true, that means click was on the overlapping area, now you can do your work, over here showing an alert
if (clickedInsideTop && clickedInsideBottom) {
alert("overlapped area");
}
});
//绑定单击函数
$(“.bottom.top”)。单击(函数(事件){
//获取底部和顶部元素
var bottomElement=$(“.bottom”);
var topElement=$(“.top”);
//获取单击的坐标
var x=event.pageX;
var y=event.pageY;
//计算底部元素坐标
var bLeft=bottomElement.offset().left;
var bTop=bottomElement.offset().top;
var bRight=bottomElement.width()+bLeft;
var bBottom=bottomElement.height()+bTop;
//计算顶部元素坐标
var-tLeft=topElement.offset().left;
var tTop=topElement.offset().top;
var tRight=topElement.width()+tLeft;
var tBottom=topElement.height()+tTop;
//默认值为false,即单击位于两个元素之外
var clickedInsideTop=false;
var clickedSideBottom=false;
//检查单击是否在底部元素内
如果(x>=bLeft&&x=bTop&&y=tLeft&&x=tTop&&y像往常一样帮助他人,我会尝试从提供的代码开始。因此,您可以:
CSS:
DOM:
你看到了吗?我希望这对你有帮助谢谢。我的情况比这更复杂,这是一个svg路径,我不知道如何获得重叠区域。对不起,关-不了解svg-将无法在这方面提供帮助-但如果你想并且可以等待-我可以尝试获取知识并解决它谢谢,你的答案有帮助。我s我将尝试与Georgios Dimitriadis的解决方案类似的东西,比如document.elementFromPoint(event.pageX,event.pageY),也许我们可以一起工作。当然我会非常高兴。谢谢,这个主意听起来不错。唯一的问题是我不知道如何将它应用到我的案例中,因为我的实际案例是不规则形状的SVG路径。谢谢,这似乎很有趣,这个元素FromPoint是否只返回最接近顶部的元素?我将“指针事件”设置为“无”。顶部设置为“无”“透明”到单击。然后我在用户使用document.elementFromPoint单击的完全相同的位置上单击虚拟鼠标,使其传播到底层。谢谢,我想知道如果有多个层重叠,我该如何执行此操作?当然,您可以在迭代循环中执行相同的操作!:)
top {
width: 300px;
height: 200px;
position: absolute;
background-color: red;
left: 200px;
top: 200px;
opacity: 0.8;
z-index: 1;
}
.bottom {
width: 300px;
height: 200px;
position: absolute;
background-color: green;
left: 100px;
top: 300px;
opacity: 0.5;
}
<div class="top"></div>
<div class="bottom"></div>
var topClicked = false;
$('.bottom').on('click',function(event) {
$('.top').css('pointer-events', 'auto');
checkIntersection();
});
$('.top').on('click',function(event) {
topClicked = true;
$(this).css('pointer-events', 'none');
$(document.elementFromPoint(event.pageX, event.pageY)).click();
});
function checkIntersection() {
if(topClicked) {
console.log("Intersection click has occured");
}
topClicked = false;
}