Consider following DOM Structure
<ul class="parentUl">
<li> Level 1
<ul class="childUl">
<li>Level 1-1 <span> Item - 1 </span></li>
<li>Level 1-1 <span> Item - 2 </span></li>
</ul>
</li>
<li> Level 2
<ul class="childUl">
<li>Level 2-1 <span> Item - 1 </span></li>
<li>Level 2-1 <span> Item - 1 </span></li>
</ul>
</li>
</ul>
Given a parent <ul> - parentUl find its descendants (<li>),
Simple $('parent child')
>> $('ul.parentUl li')
This gets all matching descendants of the specified ancestor all levels down.
> - $('parent > child')
>> $('ul.parentUl > li')
This finds all matching children (only 1st level down).
Context based selector - $('child','parent')
>> $('li','ul.parentUl')
This works same as 1. above.
find() - $('parent').find('child')
>> $('ul.parentUl').find('li')
This works same as 1. above.
children() - $('parent').find('child')
>> $('ul.parentUl').children('li')
This works same as 2. above.
Select all <ul> elements AND all <li> elements AND all <span> elements :
$('ul, li, span')
Select all <ul> elements with class parentUl :
$('ul.parentUl')
Select all <li> elements that are placed immediately after another <li> element:
$('li + li')
Select all <li> elements that are siblings of other <li> elements:
$('li ~ li')