菜单 - 背景图像和悬停行动

时间:2009-10-04 21:01:40

标签: jquery events background highlighting

我有一个菜单和jquery-code,它在悬停时使背景图像不同。

       $('#menu a').hover(function() {
            $(this).css( 'background', 'url(images/slider_bg_hover.png) repeat-x' );                     
       },function(){
            $(this).css( 'background', 'url(images/slider_bg.png) repeat-x' );
       });

它工作正常,但现在我想突出显示点击的菜单:

$('#menu a').click(function() {
   $(this).css( 'background', 'url(images/slider_bg_hover.png) repeat-x' );
});

它也可以正常工作,但点击后我从菜单区域和悬停动作调用中移动我的鼠标指针!所以这部分菜单没有被忽视!

你可以给我什么建议?

2 个答案:

答案 0 :(得分:2)

不要设置单独的css属性,而应考虑使用类。

您的示例需要三个css类(其中两个具有相同的定义)

.menu{
    background: url(images/slider_bg.png) repeat-x;
}

.hoverMenu, .selectedMenu{
    background: url(images/slider_bg_hover.png) repeat-x;
}


$('#menu a').hover(function() {
        $(this).addClass('menu');                     
   },function(){
        $(this).addClass( 'hoverMenu' );
   });

$('#menu a').click(function() {
   $('#menu a').removeClass( 'selectedMenu' );
   $(this).addClass('selectedMenu');
});

当一个元素有两个相互冲突的类时,我认为在CSS定义中最后出现的那个是生效的类。对我来说,检查这个有点深夜,但你可以交换这些类,看看哪种方式最好..

答案 1 :(得分:1)

您还可以考虑在选择的css规则之后添加!important,这样它就会消除悬停规则。 (使用上述解决方案)。