2010-01-06 148 views
3

我有一个这样的多级菜单:jQuery的添加类的某些元素

<ul> 
    <li>item 1 
    <ul> 
     <li>item 1.1</li> 
     <li>item 1.2</li> 
    </ul> 
    </li> 
    <li>item 2</li> 
    <li>item 3 
    <ul> 
     <li>item 3.1</li> 
     <li>item 3.2</li> 
    </ul> 
    </li> 
    <li>item 4</li> 
</ul> 

在jQuery中我有

$("#divId ul li:odd").addClass("blue"); 
$("#divId ul li:even").addClass("green"); 

的问题是,jQuery的添加类所有列表。 我想jQuery来只是类添加到第一级(UL> li.class),而不是孩子的内心(ul> li> ul> li.class)

感谢

+1

Yeeees ...然后呢? – jensgram 2010-01-06 07:29:07

+0

将类添加到该元素? – Anurag 2010-01-06 07:29:41

+6

你有一个多层菜单,如* THAT *?不要继续!也许有一个问题? – zombat 2010-01-06 07:29:56

回答

3

这应该工作:

$("#divId ul:first > li:odd").addClass("blue"); 
$("#divId ul:first > li:even").addClass("green"); 

它将类添加到DIVID找到的第一个UL标签的孩子。

+0

这工作完美。谢谢! – 2010-01-06 18:13:28

1

我要在这里使用的假设,你要知道,他们说他们什么;)

如果你想具体的类添加到所有的UL项目的再:

$('ul').addClass('class-addition'); 

您可以用相同的方式设置列表项目的样式。

如果你想一里内的类添加到UL可以使用:

$('li > ul').addClass('class-addition'); 

使用父>子选择。

我看看Branislav提供的选择器文档,找到你想要的东西,然后用firebug来测试结果。

2

你可以尝试:

$("#divId ul li:not(#divId ul li ul li):odd").addClass("blue"); 
$("#divId ul li:not(#divId ul li ul li):even").addClass("green"); 
+0

这也适用!非常感谢! – 2010-01-06 18:14:39