2013-04-24 78 views
0

我需要在第一个标签后立即添加一个类到div。在标签后立即选择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-第一和活跃。我现在需要的就是抓住

<div class="content"> 

,并使其:

没有运气 .closest().next()等:

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

我试过多种组合后

<div class="content mobile"> 
立即

我觉得这很接近,但它绝对不是雪茄。 (第一两条线在这一点上出色的工作)

$('.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'); 
+1

这应该工作http://jsfiddle.net/brsvK/1 – Musa 2013-04-24 18:40:19

+0

顺便说一句,我可以指出,一个'label'用于'[识别用户界面中项目的标题](http://www.w3.org/wiki/HTML/Elements/label)',专门用于将文本与给定的“输入”相关联(或'textarea'或'select')元素;不是一个标题。我认为,从我所看到的情况来看,你应该考虑使用标题元素之一'h1'到'h6'(尽管你有两个元素,可能不是'h1')。 – 2013-04-24 19:03:37

回答

1

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

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

See the behavior here

+0

忘记了最初的选择后'.' :) – tymeJV 2013-04-24 18:34:54

+0

谢谢你的头了:) – 2013-04-24 18:35:48

+0

'找到()'只着眼于后人,而不是兄弟姐妹。考虑重新阅读[API](http://api.jquery.com/find/)。 – 2013-04-24 18:35:54

1

.next()只有作品如果div立即为label后。

如果在labeldiv之间存在另一个元素,它将不起作用。
DEMO:http://jsfiddle.net/dirtyd77/uPHk6/6/

否则,你将不得不使用.nextAll()

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

DEMO: http://jsfiddle.net/dirtyd77/uPHk6/7/


UPDATE:

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

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

DEMO: http://jsfiddle.net/dirtyd77/uPHk6/10/

+0

大教堂,感谢解释的.next()和.nextAll()之间的差异 - 有帮助,以及 – 2013-04-24 19:22:18

相关问题