Javascript 处理z-index'上的点击事件;d层

Javascript 处理z-index'上的点击事件;d层,javascript,event-handling,z-index,Javascript,Event Handling,Z Index,在我正在构建的地图应用程序中,我有两个z索引层。我在单击图层放大时遇到问题。单击处理程序位于底层的z索引层上,我不希望在单击覆盖层中的控件时触发它 我遇到的问题是,不管发生什么,都会引发事件,但当单击顶层的某个对象时,事件的originalTarget属性不是底层中的图像。还有什么方法可以改变这个吗?它被称为事件冒泡,您可以使用event.stopPropagation()方法(event.cancelBubble()在IE中)来控制它。您还可以通过从元素上的onwhere属性调用的处理程序返回

在我正在构建的地图应用程序中,我有两个z索引层。我在单击图层放大时遇到问题。单击处理程序位于底层的z索引层上,我不希望在单击覆盖层中的控件时触发它


我遇到的问题是,不管发生什么,都会引发事件,但当单击顶层的某个对象时,事件的originalTarget属性不是底层中的图像。还有什么方法可以改变这个吗?

它被称为事件冒泡,您可以使用
event.stopPropagation()
方法(
event.cancelBubble()
在IE中)来控制它。您还可以通过从元素上的onwhere属性调用的处理程序返回true/false来控制它。这是一个棘手的问题,所以我建议你做一些


信息:,

尽管这不能直接解决问题,但在找到更合适的解决方案之前,这可能是一个可行的解决办法

编写一个名为onClick的函数,让该函数有足够的智能知道是谁调用了它。然后,该函数根据单击它的用户采取适当的操作。你可以发送任何独一无二的东西,然后使用开关

简化示例:

<html>
<body>

<script type="text/javascript">
function myClickHandle(anID)
{
switch(anID){
case 'bottom': 
      alert("I am on the bottom");
      break;
case 'top':
      alert("I am on the top");
      break;
}
}
</script>

<html>
<div style="z-index:10"><input type=button value='top' onclick="myClickHandle(this.value)"/></div>
<div style="z-index:11"><input type=button value='bottom' onclick="myClickHandle(this.value)"/></div>
</body>
</html>

函数myClickHandle(anID)
{
开关(anID){
案例“底部”:
警惕(“我在底部”);
打破
案例“顶部”:
警惕(“我在上面”);
打破
}
}

我认为最好的做法是在控件移动到上层时分离事件处理程序,当控件返回到下层时,可以重新附加事件。

优先于具有良好z索引的元素


这不是事件冒泡。事件冒泡就是在这两个元素上都有一个click事件处理程序。我只在底层有一个点击处理程序。那么“点击处理程序在底层的zindexed层上,我不希望它在上一层的控件被点击时触发”是什么意思呢。也许你真的想捕捉,但IEI不支持这一点。我收回我的原始评论!对不起,这确实是一个冒泡的事件。我采纳了你的建议,并使其发挥作用:)在
停止程序中输入拼写。还有什么方法可以不引人注目地这样做吗?i、 不要把javascript和html混在一起?抱歉,夏天结束后,我直到今晚才回到堆栈溢出。脚本标记可以放在头文件中,也可以放在某个外部文件中,这只是为了举例。onclick必须在那里启动操作。