jQuery CSS悬停 [英] jQuery CSS Hover
问题描述
我有一个CSS菜单,当鼠标悬停在它上面时设置父级li的颜色,它是子ul(子菜单)。基本上,当你悬停在菜单上,它改变颜色,并保持这种方式,直到你mouseoff菜单和它的子菜单。它看起来不错。
I have a CSS menu that sets the parent li's color when hovering over it and it's child ul (submenu). Basically, when you hover over the menu, it changes colour and remains that way until you mouseoff the menu and it's submenu. It looks nice.
我添加了一些jQuery代码来改变菜单项的颜色,直到打开某个页面。然后,这些菜单将退色并恢复颜色。
I've added some jQuery code to change the colour of the menu items when until a certain page is opened. Then, those menus will fade back in and regain colour. At which point, waiting for a hover to change colour.
我遇到的问题是,当您将颜色更改回原始状态(在CSS中设置)时,与jQuery,它删除:hover类防止颜色更改当悬停在它,它是子子菜单。任何想法如何解决这个?是否有一个带jQuery的选择器,它允许我将hover类设置回正常?
The problem I'm having is, when you change the colour back to it's original state (set in CSS) with jQuery, it removes the :hover class preventing the colour change when hovering over it and it's child submenu. Any ideas on how to fix this? Is there a selector with jQuery that'll allow me to set the :hover class back to normal?
/* ---- Menu Colours ---- */
$(document).ready(function()
{
var colours = ['d50091', 'c8fa00', '00b4ff', 'b158fc', 'ffa800', '00b72f'];
var counter = 0; // Loop for the colurs
var status = 0; // Status of the colours (greyed out or visible)
$('ul.menu-horiz').children('li').children('a').hover(function()
{
$(this).parent()[0].css('color', '#d50091');
}, function()
{
$(this).parent()[0].css('color', '#b6b6b6');
});
$('ul.menu-horiz').children('li').children('a').each(function()
{
$(this).css({opacity: 0.2, color: '#' + colours[counter]});
counter++;
});
$('.haccordion .header').click(function()
{
if (window.location.hash.substr(1) == 'photogallery')
{
$('ul.menu-horiz').children('li').children('a').each(function()
{
if ($(this).css('opacity') != '1.1')
{
$(this).animate({opacity: 1.1}, 1000).css('color', '#b6b6b6');
}
});
}
else
{
counter = 0;
if ($('ul.menu-horiz').children('li').children('a').css('opacity') != '0.2')
{
$('ul.menu-horiz').children('li').children('a').animate({opacity: 0.2}, 1000, function()
{
$('ul.menu-horiz').children('li').children('a').each(function()
{
$(this).css('color', '#' + colours[counter]);
counter++;
});
});
}
}
});
});
推荐答案
您应该可以使用:hover
选择器并传递 over()
和分别设置和取消设置悬停颜色。有关详情,请参阅
:hover
文档 。
You should be able to use the :hover
selector and pass in an over()
and out()
function that set and unset the hover color respectively. See the :hover
documentation for more.
简单示例
$ b
given the CSS:
<style>
.blue { background-color: blue; }
.red { background-color: red; }
</style>
执行以下操作:
$('li').hover(function() {
$(this).removeClass('red');
$(this).addClass('blue');
},
function() {
$(this).removeClass('blue');
$(this).addClass('red');
})
这篇关于jQuery CSS悬停的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!