我如何在jquery中制定“if this.children.has.not.class”?

时间:2013-04-30 22:42:24

标签: javascript jquery html html-lists

我有一个清单:

<ul>
   <li class="left-main-list"><a href="#">Whatnot</a></li>
   <li class="left-main-list active"><a href="#">Whatnot1</a></li>
      <ul class="random">
         <li><a href="#">BK Sang, Oxelesund</a></li>
         <li><a href="#">Boxholms BS</a></li>
      </ul>
   <li class="left-main-list"><a href="#">Whatnot2</a></li>
</ul>

首先我想知道,第二个<ul class="random">是上面列表项的孩子吗?

如果是这样,我想做一个if声明,说如果有人点击一个"left-main-list"类的项目,我想知道他们的孩子是否有一个班级,如果它没有' t,我想为那个孩子添加一个班级(“随机”)。

如果这实际上不是孩子,我想要一种方法来检查第二个ul是否有一个类,如果没有,则将“随机”添加到该ul。我猜我不得不给它一个id,如果它不是上面列表项的孩子?

任何帮助将不胜感激! /比尔

2 个答案:

答案 0 :(得分:3)

您的HTML无效UL不能包含其他UL。这会将类random添加到li.left-main-list的子节点中,它们根本没有任何类。

http://jsfiddle.net/MERF5/

<ul>
   <li class="left-main-list"><a href="#">Whatnot</a></li>
   <li class="left-main-list active"><a href="#">Whatnot1</a>
      <ul>
         <li><a href="#">BK Sang, Oxelesund</a></li>
         <li><a href="#">Boxholms BS</a></li>
      </ul>
       </li>
   <li class="left-main-list"><a href="#">Whatnot2</a></li>
</ul>


$('.left-main-list').click(function(){
    $(this).children(':not([class])').addClass('random')
});

答案 1 :(得分:0)

请注意,rour HTML无效,第二个ul应位于li元素内。

此外,在添加该类之前,您无需检查element是否具有特定类。如果元素已经具有指定的类,jQuery将不会添加重复的类。

但是,如果ul下没有.random类,我们就会找到li个元素(我认为thisli < / em>的):

$(this).children('ul:not(.random)');