javascript - 将左键单击消息传递给另一个元素下方的 HTML 元素

标签 javascript html css

我有 2 个 HTML 元素,它们位于完全相同的位置(相同的 x、y 值和相同的宽度和高度)。它们也有相同的 z-index。

两者都监听左键单击事件,但因为一个位于另一个元素之上,所以只有一个元素接收到左键单击事件。我使用 ele.addEventListener("mousedown", touchStart, false); 来注册/检测元素上的左键单击。

有没有办法确保两个元素都收到左键单击事件/消息,即使它们都位于同一位置?

也许如果我将他们的 z-index 更改为不同的索引,那么他们都会收到消息?

最佳答案

您可以使用pointer-events css property :

.click-thru {
  pointer-events: none;
}

这将使元素上的点击传递到它下面的元素。但是,顶部元素不会获得点击事件,因此这可能对您不起作用。

您还可以尝试使用全局点击处理程序和 document.getElementAtPoint 手动触发两个元素上的事件。

// Example (with jQuery)
$(document).click(function(e){
  var mouseX = e.pageX, mouseY = e.pageY;
  if(mouseIsOverElement(mouseX, mouseY, element1))
  {
    $(element1).click();
  }
  if(mouseIsOverElement(mouseX, mouseY, element2))
  {
    $(element2).click();
  }
});

// Possible implementation of mouseIsOverElement
function mouseIsOverElement(x, y, ele)
{
  var result = false;

  // Hide both
  $(element1).hide();
  $(element2).hide();

  // Show the target element
  $(ele).show();

  if(document.getElementAtPoint(x,y)===ele)
  {
    result = true;
  }

  $(element1).show();
  $(element2).show();

  return result;
}

关于javascript - 将左键单击消息传递给另一个元素下方的 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8002960/

相关文章:

html - 水平对齐同名的2个类

javascript - `apply` 没有 't work for function as object' 的属性

javascript - 更改网页内容但谷歌分析仍然跟踪该页面

javascript - 如果在模板返回之前删除元素,则 knockout 组件将失败

javascript - 自行截图制作网页

javascript - contentEditable,CTRL-B CTRL-I 和保存

javascript - 如何调整这个固定的表格标题,使其左对齐而不是居中?

html - 如何自动播放音乐并在后台循环播放

javascript - 悬停时更改进度条跨度文本

css - Wordpress 破坏了纯 CSS 悬停 slider