2012-08-01 72 views
1

我有一個菜單項,看起來像這樣。爲李添加班,如果它有孩子ul

<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。但它正在將所有課程添加到所有課程中。我哪裏錯了?

回答

6

嘗試.has

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

+1更好的答案:) – 2012-08-01 02:30:11

1

您不需要檢查ul是否存在向父類li添加類,那麼您只需將jQuery選擇器中的子ul作爲目標即可。這裏是一個例子:

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

如果未找到ul,代碼將不會觸發。當你添加了全班所有列表項,你可以簡單地只針對第一子錨點(如果你想)使用>選擇:

.menuDiv li.hasChild > a 

...或目標的所有<ul>與李父類:

.menuDiv li.hasChild ul 

您可以查看下面的鏈接看到活生生的實例(也有2級列表)和更多詳細的代碼:

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