如何在jQuery中选择:#menu ul li:hover> UL?

时间:2012-10-10 10:56:06

标签: jquery hover parent-child

如何在jQuery中选择等效的#menu ul li:hover > ul

当悬停仅在li TARGET

时,我想更改框的颜色

有关详细信息,请参阅:http://jsfiddle.net/wGbwX/18/

5 个答案:

答案 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')

jsfiddle
这将使用:gt选择器。

$('#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)

试试这个:

$('#menu ul:first > li > a')

更新了fiddle

答案 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'}); }
 );