使用jquery为具有特定类的每个父级选择没有特定类的第一个直接子级

时间:2014-05-02 20:29:06

标签: javascript jquery traversal

我想创建一个脚本,该脚本将为没有特定类的第一个子类添加一个类,对于具有特定类的每个父类。 例如:

<div class="wrap">
  <p class="no">1. Not this one please</p>
  <div>
    <p>2. not this either</p>
  </div>
  <p>3. Make this red!</p>
  <p>4. Not this</p>
</div>
<div class="wrap">
  <p class="no">5. Not this one please</p>
  <p>6. Make this red also!</p>
  <p>7. Not this</p>
</div>

我的javascript如下:

$('div.wrap').find('p:not(.no):first').addClass('red');

这将选择没有class="no"的后代,而不是第一个孩子(所以第2项,而不是上例中的第3项)。 我尝试将.find更改为.children,但之后它只选择页面上的第一个示例,而不是每个集合中的第一个示例(因此上面示例中只有第2项,而不是第6项) )。

这是一个说明上述http://cdpn.io/izGDH

的codepen

2 个答案:

答案 0 :(得分:5)

你非常接近!您想要添加指令以仅抓取直接后代:“&gt;”

$('div.wrap').find('> p:not(.no):first').addClass('red');

http://jsfiddle.net/wnewby/HUqR9/

答案 1 :(得分:0)

这是一种方式:

$('div.wrap p.no').each(function(){ $(this).siblings('p').first().addClass('red'); })

<强> jsFiddle example