Ответы:
хватай второго ребенка:
$(t).children().eq(1);
или возьмите второго ребенка <td>
:
$(t).children('td').eq(1);
find()
метода jQuery? Как $(t).find('td').eq(1)
получить вторую <td>
, t
скажем, таблицу, и мне нужно было посмотреть вниз более чем на 1 узел?
.children('td').eq(1)
до работы по какой-то причине, но .find('td').eq(1)
работал просто отлично.
Вот решение, которое может быть более понятным для чтения в коде:
Чтобы получить 2-го ребенка из неупорядоченного списка:
$('ul:first-child').next()
И более сложный пример: этот код получает текст атрибута «title» 2-го дочернего элемента UL, обозначенного как «my_list»:
$('ul#my_list:first-child').next().attr("title")
Во втором примере вы можете избавиться от 'ul' в начале селектора, так как он избыточен, потому что идентификатор должен быть уникальным для одной страницы. Это просто, чтобы добавить ясности к примеру.
Обратите внимание на производительность и память , эти два примера являются хорошими показателями, потому что они не заставляют jquery сохранять список элементов ul , которые впоследствии должны были быть отфильтрованы.
ul
на нее, чтобы нам не пришлось ее искать.
Как это:
$(t).first().next()
Помимо того, как красиво выглядит ответ, вы также должны подумать о производительности кода. Следовательно, также важно знать, что именно находится в $(t)
переменной. Это массив <TD>
или это <TR>
узел с несколькими <TD>s
внутри? Чтобы дополнительно проиллюстрировать это, посмотрите результаты jsPerf в <ul>
списке с 50 <li>
детьми:
$(t).first().next()
Метод является самым быстрым здесь, на сегодняшний день.
Но, с другой стороны, если вы берете <tr>
узел и находите <td>
дочерние элементы и запускаете тот же тест, результаты не будут такими же.
Надеюсь, поможет. :)
Я не видел здесь упомянутого, но вы также можете использовать селекторы спецификаций CSS. Посмотреть документы
$('#parentContainer td:nth-child(2)')
В дополнение к использованию методов jQuery, вы можете использовать собственную cells
коллекцию, которую <tr>
вам дает.
$(t)[0].cells[1].innerHTML
Предполагая, t
что это элемент DOM, вы можете обойти создание объекта jQuery.
t.cells[1].innerHTML
Удивительно видеть, что никто не упомянул нативный способ JS сделать это ..
Просто получите доступ к children
свойству родительского элемента. Он вернет живой HTMLCollection дочерних элементов, к которым может обращаться индекс. Если вы хотите получить второго ребенка:
parentElement.children[1];
В вашем случае что-то подобное может сработать: (пример)
var secondChild = document.querySelector('.parent').children[1];
console.log(secondChild); // <td>element two</td>
<table>
<tr class="parent">
<td>element one</td>
<td>element two</td>
</tr>
</table>
Вы также можете использовать комбинацию селекторов CSS3 / querySelector()
и использовать :nth-of-type()
. Этот метод может работать лучше в некоторых случаях, потому что вы также можете указать тип элемента, в этом случае td:nth-of-type(2)
(пример)
var secondChild = document.querySelector('.parent > td:nth-of-type(2)');
console.log(secondChild); // <td>element two</td>
Используйте .find()
метод
$(t).find("td:eq(1)");
td:eq(x) // x is index of child you want to retrieve. eq(1) means equal to 1.
//1 denote second element
Вы можете использовать два метода в jQuery, как указано ниже:
Использование jQuery: nth-child Selector Вы указали позицию элемента в качестве аргумента, равную 2, когда вы хотите выбрать второй элемент li.
$( "ul li:nth-child(2)" ).click(function(){
//do something
});
Использование jQuery: eq () Selector
Если вы хотите получить точный элемент, вы должны указать значение индекса элемента. Элемент списка начинается с индекса 0. Чтобы выбрать второй элемент li, вы должны использовать 2 в качестве аргумента.
$( "ul li:eq(1)" ).click(function(){
//do something
});
См. Пример: Получить второй дочерний элемент списка в jQuery
$(t).children('td').eq(1)
и$(t).children()[1]