У меня есть <tr>
который включает в себя несколько <td>
s, каждый из которых включает ровно один <div>
, который может иметь следующую структуру:
<tr id="foo">
<td><div>...</div></td>
<td><div>...</div></td>
...
<td><div>...</div></td>
</tr>
Учитывая селектор jQuery obj = $('#foo')
, как я могу получить селектор, который указывает на все <div>
непосредственно под <td>
непосредственно под <tr>
(но ничего внутри <div>
s)? Другими словами, как я могу составить селектор, эквивалентный:
$('#foo > td > div')
используя obj
(определяемый как $('#foo')
) в виде obj.someFunction()
?
Вероятно, chldren()
и/или find()
могут быть релевантными, но я не уверен.
Вы всегда можете вызвать .children()
дважды:
obj.children('td').children('div')
obj.children('td > div')
(предоставленному Матей Чренко) по сравнению с obj.children('td').children('div')
?
obj.find('td> div'); то же, что и $ ('# foo td> div');
obj.children('td> div'); то же, что и $ ('# foo> td> div');
$('#foo td > div')
или $('#foo > td > div')
?
Вы можете использовать это в jQuery:
$("#foo td > div:first-child")
Демо: http://jsfiddle.net/jfriend00/EHZK8/
Это выберет первый дочерний div, даже если есть более одного дочернего div, и он также избежит использования дочерних div.
obj.find('td div')
будет явным .... на самом деле не ясно, что вы хотите с ними делать.obj.find('td:has(div)')
даст вам вопрос о TD, может быть, то, что вы хотитеobj.find('td > div')
.'#foo'
ли этоtd div
где-либо ниже'#foo'
(то есть эквивалентно$('#foo td > div')
) или только объекты непосредственно под'#foo'
(т.е. эквивалентно$('#foo > td > div')
)?