jQuery添加类到特定元素

3

我有一个多级菜单,就像这样:

<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)。
谢谢。

6
你有像那样的多级菜单吗?请继续!也许需要一个问题形式的表述? - zombat
4个回答

3
这应该可以工作:
$("#divId ul:first > li:odd").addClass("blue"); 
$("#divId ul:first > li:even").addClass("green"); 

它会将类添加到divId中找到的第一个ul标签的子元素中。

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");

1

我这里要使用一些假设,你知道它们的含义;)

如果你想要给所有的ul元素添加特定的类,则可以这样做:

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

你可以以相同的方式为列表项设置样式。

如果你想要在li中添加ul的类,可以使用以下代码:

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

使用父级 > 子级选择器。

我建议查看Branislav提供的选择器文档,找到你想要的内容,并使用firebug测试结果。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接