1

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

<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。非常感谢任何线索。

4

3 回答 3

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');
于 2012-10-05T14:54:18.357 回答
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/

于 2012-10-05T14:55:02.000 回答
0
$("li").each(function(){
    if($(this).children('ul').length == 0)
        $(this).addClass('link');
});
于 2012-10-05T14:53:48.290 回答