1

所以我在下拉菜单中有一个“ul”和一个“li”。像这样:

<ul>
<li><a href="">Link 1</a>
<ul>
<li><a href="">SubLink 1</a>
<li><a href="">SubLink 2</a>
</ul>
</li>
</ul>

我需要为包含在具有“ul”的“li”中的每个锚点添加一个类。在这种情况下,我想将其添加到“链接 1”。

我试图将它添加到包含“ul”孩子的“li”中,但它似乎不起作用。我不知道为什么。我尝试了 serverl 方法,但没有结果。我对 jquery 不是很熟练 :)

我试过这个:

$('ul li:has(ul)').addClass('someclass');

我把它放在我的“$(document).ready”中

4

6 回答 6

2

你有没有尝试过?

$('ul li ul').siblings('a').addClass('someclass');

结果将是:

<ul>
   <li>
      <a href="" class="someClass">Link 1</a>
      <ul>
          <li>
              <a href="">SubLink 1</a>
          </li>
          <li>
              <a href="">SubLink 2</a>
          </li>
      </ul>
   </li>
</ul>
于 2013-10-16T16:33:59.053 回答
1

像这样使用jquery 的.has()函数:

$( "li" ).has( "ul" ).addClass('someclass');

这是工作演示

于 2013-10-16T16:37:00.587 回答
0

您说您需要将其添加到锚点,但您的代码将其添加到li.

如果要将其添加到锚点:

$('ul li:has(ul)').children('a').addClass('someclass');

实例| 资源

或全部在选择器中:

$('ul li:has(ul) > a').addClass('someclass');

实例| 资源

于 2013-10-16T16:34:00.553 回答
0

这可能不是很有效,但你可以

$('ul li ul').parent().parent().addClass('someclass');
于 2013-10-16T16:34:14.617 回答
0

我建议您id为父ul元素添加一个属性,这样页面上的其他元素就不会出现任何问题。我向父元素添加了一个id属性。dropdown

只要其中有一个ul元素,div#dropdown它就会向嵌套ul元素内的链接添加一个类。

$(function(){
    $('#dropdown ul a').addClass('someclass'); 
});

jsfiddle:http: //jsfiddle.net/HMzLh/

于 2013-10-16T16:42:37.840 回答
0

添加简单类不需要检查 ul 是否存在,只需在 jQuery 选择器中定位子 ul 即可。这是一个例子:

// Add Class to LI with Child UL (Level 1)
$('.menuContainer li ul').parent().addClass('hasChild');

将类添加到所有列表项后,您可以简单地使用 > 选择器定位您的锚点,就像在 jQuery 中$('li.hasChild > a')或在 CSS 中一样。


您可以查看下面的链接以查看实时示例(也包含 2 级列表)以及有关代码的更多详细信息:

http://html-tuts.com/add-class-to-parent-li-if-has-child-ul/

于 2015-12-07T08:52:27.890 回答