JQuery получает значение в дочернем div
Мне нужно захватить текстовое значение дочернего div.
<div id='first'>
<div id='first_child'>A</div>
<div id='second_child'>B</div>
<div id='third_child'>C</div>
</div>
Я пытаюсь захватить значение B. В настоящее время я пытаюсь это сделать, но он не работает,
var text_val = $('#first').next('#second_child').val();
Ответы
Ответ 1
Вы хотите использовать children()
и text()
вместо val()
. Хотя, поскольку то, что вы выбираете, имеет идентификатор (и идентификаторы должны быть уникальными), вы также можете просто выбрать на основе идентификатора, не включив в него элемент контейнера.
Метод val()
работает только с элементами ввода, текстовыми полями и выбирает - в основном все элементы формы, содержащие данные. Чтобы получить текстовое содержимое контейнера, вам нужно использовать text()
(или html()
, если вы хотите также отмечать отметку).
var text_val = $('#second_child').text(); //preferred
или
var text_val = $('#first').children('#second_child').text(); // yours, corrected
Ответ 2
next() и nextAll() пересекают братьев и сестер элемента, а не детей. Вместо этого используйте "find()"
var text_val = $('#first').find('#second_child').html();
Вы используете val() при работе с элементами, такими как входы и текстовые поля. html() вернет все, что находится под div (что работает в вашем примере). text() вернет текст в элементе (который также будет работать в вашем примере).
Ваш пример также делает меня подозрительным к вашему дизайну. Если у вас установлено несколько идентификаторов "#second_child", ваш html запутан. Вместо этого используйте класс. Однако, если есть только один идентификатор "#second_child", тогда вам нужно всего лишь:
var text_val = $('#second_child').text();
Ответ 3
вы можете просто:
var text_val = $('#second_child').text();
как указано в предыдущих ответах. но, поскольку вам нужно захватить текстовое значение дочернего div, я предполагаю, что дочерний div-идентификатор, вероятно, не всегда доступен. вы можете попробовать это вместо:
var text_val = $('#first').children().eq(1).text();
где 1 - индекс дочернего div (поскольку счетчик начинается с нуля)
Ответ 4
Попробуйте это...
var text_val = $('#first > #second_child').text();
Ответ 5
Простой,
var text_val = $('#second_child').text();
Или ваше изменение,
var text_val = $('#first').children('#second_child').text();
Это вернет "B" из div id "second_child"
UPDATE Изменено второе решение children()
вместо nextAll()
.
Ответ 6
Для нескольких элементов с одним и тем же идентификатором:
var text_val = $('#first').children('#second_child').text();
Для одного элемента с определенным id:
var text_val = $('#second_child').text();
Ответ 7
........
var text_val = $('#first').children('#second_child').text();
Ответ 8
Если вам нужно войти в списки, используйте это:
jQuery('.first > ul > li:nth-child(6)').text();
Пример кода получает значение 6-го элемента в списке.