1

如何用 jQuery 覆盖下面的 CSS?

(动画没有运行,它只是一个瞬时切换。)

menu span ul {display: none;}
menu span:hover ul {display: block;}

$('#menu span').mouseenter(function(){
    $('#menu span ul').slideDown('fast');
}).mouseleave(function(){
    $('#menu span ul').slideUp('fast');
});
4

2 回答 2

1

优雅降级的一个技巧是不必覆盖样式,如下所示:

<noscript>
  <style type="text/css">#menu span:hover ul {display: block;}</style>
</noscript>

具有与所有这些非 JS 用户样式相同的链接样式表。


或者,通过您应用的类来执行此操作#menu,您可以将其删除,以便规则不再匹配,如下所示:

#menu span ul {display: none;}
#menu.noJS span:hover ul {display: block;}

在您的脚本中,只需删除该类:

$("#menu").removeClass("noJS");

.hover()附带说明一下,您可以使用以下方式精简代码.slideToggle()

$('#menu span').hover(function(){
  $(this).find('ul').slideToggle('fast');
});
于 2010-08-17T02:31:16.847 回答
0

您没有看到动画,因为您的 css 覆盖了它。

消除

menu span:hover ul {display: block;}

我不会费心尝试覆盖 css 以适应没有启用 js 的浏览器。这个数字太小了,不值得考虑。

于 2010-08-17T03:00:08.567 回答