将类添加到不包含更多ul元素的所有项目

时间:2012-10-05 14:48:04

标签: javascript jquery html-lists

我有问题。请参阅我的代码部分:

<ul>
  <li><a href="#">Test 1</a></li>
  <li><a href="#">Test 2</a>
    <ul>
      <li><a href="#">Test 3</a></li>
      <li><a href="#">Test 4</a></li>
    </ul>  
  </li>
  <li><a href="#">Test 5</a></li>
  <li><a href="#">Test 6</a></li>
  <li><a href="#">Test 7</a></li>  
  <li><a href="#">Test 8</a>
    <ul>
      <li><a href="#">Test 9</a></li>
      <li><a href="#">Test 10</a></li>
      <li><a href="#">Test 11</a></li>
      <li><a href="#">Test 12</a></li>  
    </ul>  
  </li>  
</ul>

我想为所有不包含更多ul元素的项添加类 - 请看看我想要实现的目标:

<ul>
  <li><a href="#" class="link">Test 1</a></li>
  <li><a href="#">Test 2</a>
    <ul>
      <li><a href="#" class="link">Test 3</a></li>
      <li><a href="#" class="link">Test 4</a></li>
    </ul>  
  </li>
  <li><a href="#" class="link">Test 5</a></li>
  <li><a href="#" class="link">Test 6</a></li>
  <li><a href="#" class="link">Test 7</a></li>  
  <li><a href="#">Test 8</a>
    <ul>
      <li><a href="#" class="link">Test 9</a></li>
      <li><a href="#" class="link">Test 10</a></li>
      <li><a href="#" class="link">Test 11</a></li>
      <li><a href="#" class="link">Test 12</a></li>  
    </ul>  
  </li>  
</ul>

我想使用jquery。非常感谢任何线索。

3 个答案:

答案 0 :(得分:1)

$('li > a').filter(function() {
  return !$(this).siblings('ul').length;
}).addClass('link');

修改

刚才在你的问题中注意到你希望嵌套列表锚点也有link类,这样的东西应该有效: -

$('li > a').addClass('link').filter(function() {
  return $(this).siblings('ul').length;
}).removeClass('link');

答案 1 :(得分:1)

您可以将.not():has()选择器一起使用。

$("li").not("li:has(ul)")
       .children("a")
       .addClass("link");

http://jsfiddle.net/j4zsq/


或者,如果要定位的a元素似乎始终是唯一的孩子,则可以使用only-child选择器。

$("li > a:only-child").addClass("link");

http://jsfiddle.net/j4zsq/1/

答案 2 :(得分:0)

$("li").each(function(){
    if($(this).children('ul').length == 0)
        $(this).addClass('link');
});