为什么我的菜单栏诉诸于:悬停行为onload?

时间:2011-06-13 18:06:41

标签: javascript jquery html css

我正在使用dsmoothmenu jquery插件在我的页面顶部生成工具栏 - 大约一个月前,页面开始加载(大部分时间),菜单栏的第一项暴露 - - 就像用户将鼠标悬停在项目上一样。我花了好几个小时试图找出造成这种情况的原因,但没有取得任何进展。

我有另一个页面,它使用与菜单相同的精确标记,以及相同的dsmoothmenu js / css,但没有表现出上述行为。所以我认为它可能与一个元标记或被覆盖的样式有关。通过与检查员进行调查,好像ul#other_cities元素被赋予了display:block一些东西,它覆盖了display:none的默认样式,该样式应该是活动的,直到用户将鼠标悬停在元素。

以下是问题的一个示例:http://www.foodtrucksmap.com/la/

一个有效的例子:http://www.foodtrucksmap.com/iphone.html

编辑:所以我发现只有在页面加载完毕后鼠标位于窗口外部时,问题才会出现。如果您将鼠标悬停在页面上,菜单栏将不会向下滑动。这一点以及它似乎只发生在chrome中,让我感到非常困惑。

3 个答案:

答案 0 :(得分:3)

当我右键单击链接然后“在新标签页中打开链接”或“...新窗口”(我在后台打开窗口)时,我可以在Chrome中看到您的问题。这让我得出了这个结论。

谷歌的Chrome出于一些奇怪的原因,将“虚拟”指针放在位置顶部:1,左:1触发脚本。一旦我们引入实际的“物理”指针,这个位置就会接管并且问题就消失了。

由于这似乎是Chrome的一个问题,我们可以通过一些小技巧来防止这种情况。我会说主要的div#wrapper给左边有一些喘息空间吗?或者可能是像第二个例子那样有效的东西!!!

答案 1 :(得分:1)

到目前为止,我已经能够发现onMouseOver事件实际上是在页面加载时触发的。

由于我没有直接访问JS文件,所以在所有文件(而不是jquery文件)中搜索“trigger”一词,并试着找出它是否可能在任何时候调用它。

我有空的时候会做更多的研究。

答案 2 :(得分:0)

如果Nicklas是正确的并且悬停是出于某种原因触发onload,请尝试使用以下条件将hover函数的js包装在菜单javascript中:

if(event.target == this) { //Check if the hover event actually targets the object.

//Hover Code//

}

希望这有帮助!