IE6/7/8 中的 jQuery 菜单问题。链接消失

Posted

技术标签:

【中文标题】IE6/7/8 中的 jQuery 菜单问题。链接消失【英文标题】:Problem with jQuery menu in IE6/7/8. Links disappear 【发布时间】:2011-07-06 07:54:18 【问题描述】:

我正在制作的网站的菜单有一个奇怪的问题。它的问题 - 当然 - Internet Explorer(所有版本)。当我将光标移到菜单元素上时,它会显示一次然后消失。您可以在 IE 下查看:link to the site 在此之后,每个菜单元素都不可点击:-[

PS。我只是想补充一下,我尝试了 *.jpg 和 *.gif 而不是 *.png 背景,但没有结果。

好的。我有 menu.js

$('#nav a').hover(function()
    $(this).stop().animate(opacity: 1, 'slow');,
    function()
    $(this).stop().animate(opacity: 0, 'slow');
);

在 css 中有:

body#start ul#nav background: transparent url('../img/buttons_bckgd.png') no-repeat 0 0;

#top_menu #nav li float: left;

#top_menu #nav li a 
   display: block;  
   height: 60px;
   margin-top: 7px;
   opacity: 0;
   

.home 
   width: 163px;
   margin-left: 12px;
   

.home:hover background: url('../img/buttons_bckgd.png') no-repeat -12px -382px;

html部分是纯标准:

<ul id="nav">
   <li><a class="home" href="#"></a></li>
   <li><a class="offer" href="#"></a></li>
   <li><a class="gallery" href="#"></a></li>
   <li><a class="contact" href="#"></a></li>
</ul>

任何想法为什么会消失以及如何解决这个问题?

【问题讨论】:

在 Firefox 中能用吗? 是的,它适用于 Firefox/Opera/Chrome/Safari 等。 【参考方案1】:

这很奇怪。我根据您的代码为您设置了一个示例。 http://jsfiddle.net/Ruhley/emHFY/。它适用于我在 IE7 上,你呢?

【讨论】:

非常非常奇怪。您的示例甚至适用于 IE!我会检查我的代码的其余部分:-/【参考方案2】:

好的,第二次尝试 :-) 我做了一些测试 http://jsfiddle.net/7h6Vn/ 应该适用于所有浏览器。然而,我需要添加以使其在 IE6 中工作的关键 CSS 属性是 #nav li a 规则中的 background-color: white; 行。如果你把它拿出来,那么悬停动画在第一次之后就会被破坏。

我只有 IE6,所以这可能无法解决所有 IE 版本的问题。

编辑:这似乎解决了悬停问题,但您可能需要将背景颜色设置为不同的菜单。

还要感谢那个让我记忆犹新的网站 background-color 修复 - http://www.useragentman.com/blog/2010/09/02/how-to-make-cleartype-font-face-fonts-and-css-visual-filters-play-nicely-together/

编辑 2:好的,这 http://jsfiddle.net/7h6Vn/1/ 绝对有效(将鼠标悬停在结果区域上)。我正在链接到您的图像以显示悬停淡入淡出动画。在玩弄这项工作的同时,我也遇到了与solved here 相同的问题。最后要注意的一点是,我需要为非标准的 IE 添加 CSS 不透明度过滤器,因此您可能希望将其放在单独的 IE 特定 CSS 文件中。

我不确定这正是你想要的,但玩这个还是很有趣的。

【讨论】:

【参考方案3】:

你能不能把代码放在同一个页面而不是不同的脚本文件中。

打开IE8开发者工具调试menu.js脚本显示,鼠标第二次悬停时,代码没有执行。

【讨论】:

嗨!我已将代码直接放入 index.php 顶部或 【参考方案4】:

仅在文档准备好时尝试添加事件连接,类似于:

$(document).ready(function() 
  // Do menu event wiring here...
);

...并在关闭正文标记之前添加脚本链接包含。它通常对我有用。

【讨论】:

对不起,我没有写这个,但 $(document).ready(function() 最初在代码中。我现在就编辑它。【参考方案5】:

DD_belatedPNG 脚本是否会干扰背景图像属性?我知道您说过您尝试过使用不同的图像类型,但您是否尝试过删除 PNG 修复脚本?这在 http://jsfiddle.net/Ruhley/emHFY/ 中不存在,这可能解释了为什么它在该演示中有效,而不是在您的网站上。

【讨论】:

不幸的是 DD_belatedPNG 脚本仅在 IE6 中有条件注释,因此在 IE8 中不应干扰。 问题似乎出在styles.css 文件中的:hover 样式中。如果我删除 jQuery 菜单代码,那么它可以在 IE8 中运行,但在其他浏览器中会出现故障。 我在另一条评论中添加了第二个潜在的solution,它在 Firefox、Chrome 和 IE6 中对我有用。

以上是关于IE6/7/8 中的 jQuery 菜单问题。链接消失的主要内容,如果未能解决你的问题,请参考以下文章

IE6 支持jquery么

前端学习-jQuery源码学习

jQuery 效果

img标签中的alt属性在IE6/7/8中的兼容问题

jQuery升级踩坑之路

逐行分析jQuery源码