Подтвердить что ты не робот

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();
4b9b3361

Ответ 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-го элемента в списке.