如何在jQuery中选择等效的#menu ul li:hover > ul
?
当悬停仅在li
TARGET
有关详细信息,请参阅:http://jsfiddle.net/wGbwX/18/
答案 0 :(得分:1)
您可以悬停嵌套uls的父级:
$('#menu ul > li >ul').parent().hover
编辑以反映pebbl使用选择嵌套li的推荐
更新了JS小提琴:http://jsfiddle.net/wGbwX/23/
答案 1 :(得分:1)
由于TARGET
位于a
标记中,您可以使用以下内容:
$('#menu > ul > li > a')
>
是选择每个父母的直接子女。然后最终将悬停事件绑定到a
标记而不是li
。
在选择器中使用所有>
的原因是,选择器不会选择TARGET a
内的li
标记。
修改强>
由于HOME
链接不应触发悬停事件,因此您可以使用以下方法之一:
两者都会选择相同的项目,但逻辑是不同的。
$('#menu>ul>li:gt(0) > a')
$('#menu>ul>li:not(:first) > a')
jsfiddle。
虽然这是:first和:not的组合。的jsfiddle。
编辑2:
好的抱歉,现在我理解了问题的要求。
Joel's solution有效,但如果您想在选择器中执行整个操作,则可以执行以下操作:
$('#menu > ul > li:has(ul) > a')
jsfiddle。
这将使用:has选择器。
我倾向于选择这个解决方案,因为如果我稍后需要返回此代码,或者其他人想要查看代码,那么通过阅读它可以很容易地理解选择器的目标。
我在
anchor
内选择list item
,其中包含unordered list
等...
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为这有效:
但仅适用于jquery 1.4及更高版本
$(“#menu ul li ul li”)。hover(function(){});
答案 4 :(得分:0)
试试这个demo
$('#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'}); }
);