答案 0 :(得分:0)
通过页面源的快速查看,我找到了处理悬停事件的jQuery代码:
$("ul#topnav li").hover(function() { //Hover over event on list item
$(this).css({ 'background' : '#1376c9 url(topnav_active.gif) repeat-x'}); //Add background color + image on hovered list item
$(this).find("span").show(); //Show the subnav
} , function() { //on hover out...
$(this).css({ 'background' : 'none'}); //Ditch the background
$(this).find("span").hide(); //Hide the subnav
});
如果你希望subnav bar在点击之后保持可见,或者只是在'hover out'函数中创建一个if()语句来检查是否有点击过的东西,即
} , function() { //on hover out...
$(this).css({ 'background' : 'none'}); //Ditch the background
if(subnavclick==0){
$(this).find("span").hide(); //Hide the subnav
}
});
在你的subnav .click()函数中添加subnavclick
变量的设置,如下所示:
$("span").click(function(){
subnavclick==1;
//do other stuff
});
这对你有用....
答案 1 :(得分:0)
尝试更改
$("ul#topnav li").hover(function() { //Hover over event on list item
$(this).css({ 'background' : '#1376c9 url(topnav_active.gif) repeat-x'}); //Add background color + image on hovered list item
$(this).find("span").show(); //Show the subnav
} , function() { //on hover out...
$(this).css({ 'background' : 'none'}); //Ditch the background
$(this).find("span").hide(); //Hide the subnav
});
到
$("ul#topnav li").click(function() { //Hover over event on list item
$(this).css({ 'background' : '#1376c9 url(topnav_active.gif) repeat-x'}); //Add background color + image on hovered list item
$(this).find("span").show(); //Show the subnav
}
答案 2 :(得分:0)
现在不应该像脚本中所述那样对鼠标悬停事件产生影响,而应该让它在the click event上运行。
答案 3 :(得分:0)
大多数js代码都是冗余的,因为无论如何都是由css提供的。只需添加一个“clicked”类,它模仿li的悬停伪类,并在点击时添加和删除它。
http://jsfiddle.net/VirusZ/THYsK/
此外,您必须更新z-indices,以便即使点击的元素可见,子菜单也会悬停显示。
答案 4 :(得分:0)
要概括,您需要在CSS文件和JS中执行此操作。您需要找到ul#topnav li:hover{...}
并将其克隆为ul#topnav li.active{...}
之类的内容。这是我们将应用于当前所选菜单项的类。
ul#topnav li.current{
background: #f00 url(topnav_current.gif) repeat-x;
}
从那里,它将取决于您的网站的确切工作方式。每个选项卡是否会将您带到新页面,或者单击选项卡会触发ajax检索?
如果你正在使用AJAX,你可以捕获LI的点击事件来设置一个类。 (LIVE DEMO)。如果您在每次点击时都使用新页面,则需要让JS解析网址并使用$(item).addClass('current');