Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何触发jQuery中的click事件_Javascript_Jquery_Events - Fatal编程技术网

Javascript 如何触发jQuery中的click事件

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; } 您没有提供代码,所以我也不会。

全部:

我有两个,部分重叠,顶部一个有类“top”,底部一个有类“bottom”,我想做的是在单击重叠区域时触发两个onclick事件

我该怎么做

HTML类似于:

.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;
}