如果它有子ul,则将类添加到li

时间:2012-08-01 02:25:23

标签: jquery

我有一个看起来像这样的菜单项。

<ul>
<li><a href="id=1">HOME</a></li>
<li><a href="id=2">News</a>
    <ul>
        <li><a href="id=3">News Archive</a></li>
    </ul>
</li>
</ul>

我希望它看起来像这样

<ul>
<li><a href="id=1">HOME</a></li>
<li class="hassub"><a href="id=2">News</a>
    <ul>
        <li><a href="id=3">News Archive</a></li>
    </ul>
</li>
</ul>

因此,如果李有一个孩子,那么它将有一类hassub。

我尝试使用jQuery see fiddle添加它。但它正在为所有人提供课程。我哪里错了?

3 个答案:

答案 0 :(得分:6)

尝试.has

$('ul li').has('ul').addClass('hassub');

答案 1 :(得分:6)

试试这个,只使用一个$(selector)

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

现场演示:

http://jsfiddle.net/oscarj24/fNrQE/2/

答案 2 :(得分:1)

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

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

如果未找到ul,则不会触发代码。将类添加到所有列表项后,您只需使用&gt;仅定位第一个子锚(如果需要)。选择器:

.menuDiv li.hasChild > a

...或使用li父类定位所有<ul>

.menuDiv li.hasChild ul

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

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