如何在 jQuery 中选择等价的#menu ul li:hover > ul
?
li
当悬停仅在目标上时,我想更改框的颜色
有关更多详细信息,请参阅:http: //jsfiddle.net/wGbwX/18/
如何在 jQuery 中选择等价的#menu ul li:hover > ul
?
li
当悬停仅在目标上时,我想更改框的颜色
有关更多详细信息,请参阅:http: //jsfiddle.net/wGbwX/18/
由于您TARGET
在a
标签中,您可以使用以下内容:
$('#menu > ul > li > a')
这>
是选择每个父母的直接孩子。然后最后将悬停事件绑定在a
标签上而不是li
.
在选择器中使用所有这些的原因>
是选择器不会选择a
TARGET 内的标签li
。
编辑:
由于HOME
链接不应触发悬停事件,您可以使用以下方法之一:
两者都将选择相同的项目,但逻辑不同。
$('#menu>ul>li:gt(0) > a')
$('#menu>ul>li:not(:first) > a')
jsfiddle。
虽然这是:first和:not的组合。jsfiddle。
编辑2:
好的,抱歉,现在我了解了问题的要求。
Joel 的解决方案有效,但如果您想在选择器中完成所有操作,您可以执行以下操作:
$('#menu > ul > li:has(ul) > a')
jsfiddle。
这将使用:has选择器。我更喜欢这个解决方案,因为如果我需要稍后返回这段代码,或者其他人想查看代码,选择器的目标可以通过阅读它来轻松理解。
我正在选择一个包含等的
anchor
内部 alist item
unordered list
您可以悬停嵌套 uls 的父级:
$('#menu ul > li >ul').parent().hover
已编辑以反映 pebbl 对使用选择嵌套 li 的建议
更新了 JS 小提琴:http: //jsfiddle.net/wGbwX/23/
我认为这有效:
但仅适用于 jquery 1.4 及更高版本
$("#menu ul li ul li").hover(function(){});
试试这个演示
$('#menu ul li a').hover(
function(e) {
change = $(this).parent().find(".sub-nav").length;
if(change)
{
$('.toto').css({'background-color':'#cccccc'});
}
},
function() { $('.toto').css({'background-color':'#f8f8f8'}); }
);