我正在使用dsmoothmenu jquery插件在我的页面顶部生成工具栏 - 大约一个月前,页面开始加载(大部分时间),菜单栏的第一项暴露 - - 就像用户将鼠标悬停在项目上一样。我花了好几个小时试图找出造成这种情况的原因,但没有取得任何进展。
我有另一个页面,它使用与菜单相同的精确标记,以及相同的dsmoothmenu js / css,但没有表现出上述行为。所以我认为它可能与一个元标记或被覆盖的样式有关。通过与检查员进行调查,好像ul#other_cities
元素被赋予了display:block
一些东西,它覆盖了display:none
的默认样式,该样式应该是活动的,直到用户将鼠标悬停在元素。
以下是问题的一个示例:http://www.foodtrucksmap.com/la/
一个有效的例子:http://www.foodtrucksmap.com/iphone.html
编辑:所以我发现只有在页面加载完毕后鼠标位于窗口外部时,问题才会出现。如果您将鼠标悬停在页面上,菜单栏将不会向下滑动。这一点以及它似乎只发生在chrome中,让我感到非常困惑。
答案 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//
}
希望这有帮助!