在标签后立即选择div

时间:2013-04-24 18:33:04

标签: jquery

我需要在第一个标签后立即向div添加一个类。

我的HTML就是这样:

<label class="twc-first active">3DTV</label>
<div class="content mobile">
    <ul class="content">
    </ul>
    <h3>Secondary Topic Content</h3>
    <ul class="secondaryContent">
    </ul>
</div>

<label>Auto HD</label>
<div class="content">
    <ul class="content">
    </ul>
    <h3>Secondary Topic Content</h3>
    <ul class="secondaryContent">
    </ul>
</div>

我已经在使用jQuery来查找标签:首先添加twc-first和active类。我现在需要的是抓住

<div class="content"> 

并成功:

<div class="content mobile">
紧接着

之后

<label class="twc-first active">.

我尝试了.closest().next()等多种组合,但没有运气。

我认为这很接近,但绝对不是没有雪茄。 (此时前两行正在精彩地工作)

$('.twc-FAQTopics label:first').addClass('twc-first').addClass('active');
$('.twc-FAQTopics label:last').addClass('twc-last');

$('.twc-FAQTopics label:first').next('div.content').addClass('mobile');

2 个答案:

答案 0 :(得分:1)

您可以使用.next()从标签中找到div。我没有看到任何理由使用:first作为选择器,因为第一个标签已经有一个类,而第二个标签没有。

$('label.twc-first').next('div.content').addClass('someClass');

See the behavior here

答案 1 :(得分:1)

如果div紧跟在label之后,

.next() 有效。

如果labeldiv之间还有其他元素,则无效。
演示:http://jsfiddle.net/dirtyd77/uPHk6/6/

否则,您必须使用.nextAll()

$('label:first').nextAll('div:eq(0)').addClass('classHere')

样本: http://jsfiddle.net/dirtyd77/uPHk6/7/


更新:

您还可以使用Next Siblings Selector (~)

//without :first in div:first, it will return all subsequent divs
$('label:first ~ div:first').addClass('classHere'); 

样本: http://jsfiddle.net/dirtyd77/uPHk6/10/