将类添加到包含ul子级的父级

时间:2013-10-16 16:31:17

标签: jquery html

所以我有一个“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>

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

我尝试将其添加到包含“ul”子项的“li”但它似乎不起作用。我不知道为什么。我尝试过serverl方法但没有结果。我不熟悉jquery:)

我试过了:

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

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

6 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

使用jquery的.has()函数,如下所示:

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

以下是working demo

答案 2 :(得分:0)

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

如果要将其添加到锚点:

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

Live Example | Source

或选择器中的所有内容:

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

Live Example | Source

答案 3 :(得分:0)

这可能效率不高,但你可以

$('ul li ul').parent().parent().addClass('someclass');

答案 4 :(得分:0)

我建议您向父id元素添加ul属性,以便页面上的其他元素不会出现任何问题。我在父元素中添加了id dropdown属性。

如果ul中有div#dropdown个元素,它会在嵌套的ul元素中为链接添加一个类。

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

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

答案 5 :(得分:0)

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

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

将类添加到所有列表项后,您只需使用&gt;定位锚点即可。选择器,在jQuery $('li.hasChild > a')中也是如此,或者在CSS中也是如此。

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

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