0

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

li当悬停仅在目标上时,我想更改框的颜色

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

4

5 回答 5

1

由于您TARGETa标签中,您可以使用以下内容:

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

>是选择每个父母的直接孩子。然后最后将悬停事件绑定在a标签上而不是li.

在选择器中使用所有这些的原因>是选择器不会选择aTARGET 内的标签li

编辑:

由于HOME链接不应触发悬停事件,您可以使用以下方法之一:
两者都将选择相同的项目,但逻辑不同。

$('#menu>ul>li:gt(0) > a')

jsfiddle
这将使用:gt选择器。

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

jsfiddle
虽然这是:first:not的组合。jsfiddle。

编辑2:
好的,抱歉,现在我了解了问题的要求。

Joel 的解决方案有效,但如果您想在选择器中完成所有操作,您可以执行以下操作:

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

jsfiddle
这将使用:has选择器。我更喜欢这个解决方案,因为如果我需要稍后返回这段代码,或者其他人想查看代码,选择器的目标可以通过阅读它来轻松理解。

我正在选择一个包含等的anchor内部 alist itemunordered list

于 2012-10-10T11:02:44.527 回答
1

您可以悬停嵌套 uls 的父级:

$('#menu ul > li >ul').parent().hover

已编辑以反映 pebbl 对使用选择嵌套 li 的建议

更新了 JS 小提琴:http: //jsfiddle.net/wGbwX/23/

于 2012-10-10T11:02:21.820 回答
0

我认为这有效:

但仅适用于 jquery 1.4 及更高版本

$("#menu ul li ul li").hover(function(){});

于 2012-10-10T11:02:26.337 回答
0

试试这个:

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

更新了小提琴

于 2012-10-10T11:01:35.250 回答
0

试试这个演示

$('#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'}); }
 );
于 2012-10-10T11:11:20.310 回答