堆叠元素的JQuery鼠标事件

问题描述:

我有一个带有表格的网页。使用jQuery 1.3.2,我绝对将div元素放置在表格上每行的顶部。覆盖div具有更高的Z-索引。堆叠元素的JQuery鼠标事件

我将'mouseenter'和'mouseleave'事件附加到叠加的div元素上。在mouseenter上,我在覆盖div上放置一个红色边框。在mouseleave上,我删除边框。所以效果是当鼠标移动到表格上时,每个表格行都会高亮显示。

一切正常,直到鼠标在表中输入一些文本。然后边框关闭。那么,什么似乎发生的事情是:

  1. 输入叠加格 - 所谓的mouseenter
  2. 输入表中的文本(仍然在覆盖格) - 鼠标离开呼吁覆盖股利。

我最终希望捕获覆盖div内任何地方的click事件来做其他事情,所以我不能使用CSS来处理这个问题。

下面的代码:

 
    $('.overlay').bind("mouseenter", function() { 
      $(this).css('border','solid 1px red'); 
     } 
    ) 
    $('.overlay').bind("mouseleave", function() { 
      $(this).css('border','none'); 
     } 
    ) 

我会很感激的任何帮助或者得到覆盖div来捕获鼠标或获取表忽略它。

+0

您的DIV中是否包含任何浮动元素?如果是这样,很可能你需要将overflow:hidden应用到你的DIV元素上,作为一个hack来清除浮游物。 – 2009-10-19 23:48:41

+0

不漂浮。只是一个空白的div覆盖表格行,使表格行对鼠标敏感。 – Jon 2009-10-20 01:26:00

似乎是一个IE问题。无论如何,将div更改为透明img解决了它。

从我的理解,mouseenter和mouseleave不会冒泡到子元素。 (src:Mouseenter and mouseleave events for Firefox)。

尝试使用鼠标悬停和鼠标移动,它应该按预期工作。

编辑:通过冒泡到子元素,我的意思是从子元素中冒出来。

+0

不幸的是,桌子不是叠加层的孩子,所以事件不会冒泡。 – Jon 2009-10-20 01:27:21

+0

哎呀,对不起。在我回应的时候,绝对的定位一定会下滑。你有没有给鼠标移动一个机会?我看不出为什么它不起作用,并且mouseenter无论如何都是非标准的。 – Mercurybullet 2009-10-20 04:17:45

+0

我开始考虑这个问题,并想知道你甚至能够用覆盖它的div来选择底层文本。所以我把测试和你提到的代码似乎工作正常(至少在Firefox中,没有可用于测试atm的IE)。也许问题在代码中的其他地方?或者,也许我仍然在误解这个问题? 检查出来。 http://jsbin.com/ozeta – Mercurybullet 2009-10-20 07:52:48