$(t).html()
возвращается
<td>test1</td><td>test2</td>
Я хочу получить второе td
от $(t)
объекта. Я искал решение, но у меня ничего не получалось. Есть идеи, как получить второй элемент?
jquery
jquery-selectors
Upvote
источник
источник
$(t).children('td').eq(1)
и$(t).children()[1]
find()
метода jQuery? Как$(t).find('td').eq(1)
получить вторую<td>
,t
скажем, таблицу, и мне нужно было посмотреть вниз более чем на 1 узел?.children('td').eq(1)
до работы по какой-то причине, но.find('td').eq(1)
работал просто отлично.Вот решение, которое может быть более понятным для чтения в коде:
Чтобы получить 2-го ребенка из неупорядоченного списка:
И более сложный пример: этот код получает текст атрибута «title» 2-го дочернего элемента UL, обозначенного как «my_list»:
Во втором примере вы можете избавиться от 'ul' в начале селектора, так как он избыточен, потому что идентификатор должен быть уникальным для одной страницы. Это просто, чтобы добавить ясности к примеру.
Обратите внимание на производительность и память , эти два примера являются хорошими показателями, потому что они не заставляют jquery сохранять список элементов ul , которые впоследствии должны были быть отфильтрованы.
источник
ul
на нее, чтобы нам не пришлось ее искать.Как это:
ОСНОВНОЕ ОБНОВЛЕНИЕ:
Помимо того, как красиво выглядит ответ, вы также должны подумать о производительности кода. Следовательно, также важно знать, что именно находится в
$(t)
переменной. Это массив<TD>
или это<TR>
узел с несколькими<TD>s
внутри? Чтобы дополнительно проиллюстрировать это, посмотрите результаты jsPerf в<ul>
списке с 50<li>
детьми:http://jsperf.com/second-child-selector
$(t).first().next()
Метод является самым быстрым здесь, на сегодняшний день.Но, с другой стороны, если вы берете
<tr>
узел и находите<td>
дочерние элементы и запускаете тот же тест, результаты не будут такими же.Надеюсь, поможет. :)
источник
Я не видел здесь упомянутого, но вы также можете использовать селекторы спецификаций CSS. Посмотреть документы
источник
Попробуй это:
или
источник
В дополнение к использованию методов jQuery, вы можете использовать собственную
cells
коллекцию, которую<tr>
вам дает.Предполагая,
t
что это элемент DOM, вы можете обойти создание объекта jQuery.источник
Удивительно видеть, что никто не упомянул нативный способ JS сделать это ..
Без jQuery:
Просто получите доступ к
children
свойству родительского элемента. Он вернет живой HTMLCollection дочерних элементов, к которым может обращаться индекс. Если вы хотите получить второго ребенка:В вашем случае что-то подобное может сработать: (пример)
Вы также можете использовать комбинацию селекторов CSS3 /
querySelector()
и использовать:nth-of-type()
. Этот метод может работать лучше в некоторых случаях, потому что вы также можете указать тип элемента, в этом случаеtd:nth-of-type(2)
(пример)источник
Используйте
.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.
Использование jQuery: eq () Selector
Если вы хотите получить точный элемент, вы должны указать значение индекса элемента. Элемент списка начинается с индекса 0. Чтобы выбрать второй элемент li, вы должны использовать 2 в качестве аргумента.
См. Пример: Получить второй дочерний элемент списка в jQuery
источник