2016-06-08 151 views
0

我正在学习如何获得一个集合。有没有办法让以下选择更简单?这不是一个真实世界的例子,我只是想了解。我有这个ul,并希望得到第一个li及其所有以下内容。如何将一个元素及其所有元素放入一个集合中?

<ul class="foo"> 
    <li> 
     <div><p></p><div> 
     <div><a></a><div> 
    </li> 
    <li> 
     <div>content<div> 
     <div>content<div> 
    </li> 
</ul> 

我试过这个,但后来我错过了divs的孩子。

$('.foo li:first').children().addBack() 

什么是最容易和最高效的方式来获得所有这些?由于

+1

'$(” ().foo li:first')。children()。addBack()'相当于'$('。foo li:first')',因此非常多余。 –

+0

所以我们很清楚。你只想要第一个'李'和它的所有孩子,对吧? –

+0

你可能想检查.. [JqueryContents](https://api.jquery.com/contents/)...和... [JqueryFind](https://api.jquery.com/find/)。 ..和... [JqueryChildren](https://api.jquery.com/children/) – DaniP

回答

2

你将不得不使用"*"选择这个

$('.foo li:first').find("*") 

但是记住它最慢的选择,因此总是尽量避免使用它

详情check it out

+2

OP包含'addBack()'方法,因此省略'li'本身不会被选中。另外,在这种情况下使用'*'是毫无意义的。选择'$('。foo li:first')'会得到完全相同的结果集,而且速度也更快。 –

+0

@RoryMcCrossan,但我需要包括它的所有内容,两个div和那里的内容。 – Gregor

+2

这正是'$('。foo li:first')'给你的。如果你选择'li',它将包含所有'div'和其他子/孙元素。 –

相关问题