jQuery obtiene valor dentro de child div

3 minutos de lectura

avatar de usuario del medio
medio

Necesito tomar el valor de texto de un div secundario.

<div id='first'>
    <div id='first_child'>A</div>
    <div id='second_child'>B</div>
    <div id='third_child'>C</div>
</div>

Estoy tratando de tomar el valor B. Actualmente estoy intentando esto pero no funciona,

var text_val = $('#first').next('#second_child').val();

avatar de usuario de tvanfosson
tvanfosson

quieres usar children() y text() en vez de val(). Aunque, dado que lo que está seleccionando tiene una identificación (y las identificaciones deben ser únicas), también puede simplemente seleccionar en función de la identificación sin involucrar el elemento contenedor en absoluto.

Él val() El método solo funciona en elementos de entrada, áreas de texto y selecciones, básicamente todos los elementos de formulario que contienen datos. Para obtener el contenido textual de un contenedor, debe usar text() (o html()si desea que el margen también aumente).

var text_val = $('#second_child').text(); //preferred

o

var text_val = $('#first').children('#second_child').text(); // yours, corrected 

  • Los documentos de JQuery indican que nextAll atraviesa hermanos, no hijos.

    – Juan Pescador

    22 de febrero de 2010 a las 18:03

  • @ John: tienes toda la razón. No leí el HTML y la consulta lo suficientemente cerca. He actualizado para indicar que children() se necesita en lugar de next() — aunque ambos son innecesarios ya que el selector basado en id es mejor de todos modos.

    – tvanfosson

    22 de febrero de 2010 a las 18:10

next() y nextAll() atraviesan el hermanos del elemento, no de los niños. En su lugar, utilice “buscar()”

var text_val = $('#first').find('#second_child').html();

Usas val() cuando tratas con elementos como entradas y áreas de texto. html() devolverá lo que esté debajo del div (que funciona en su ejemplo). text() devolverá el texto en el elemento (que también funcionaría en su ejemplo).

Tu ejemplo también me hace sospechar de tu diseño. Si tiene varias identificaciones configuradas en “#second_child”, su html está confuso. En su lugar, utilice una clase. Sin embargo, si solo hay una identificación “#segundo_niño”, entonces todo lo que necesita es:

var text_val = $('#second_child').text();

simplemente puedes:

var text_val = $('#second_child').text();

como lo señalan las respuestas anteriores. pero, dado que “necesita obtener el valor de texto de un div secundario”, supongo que la identificación del div secundario probablemente no siempre esté disponible. puedes probar esto en su lugar:

var text_val = $('#first').children().eq(1).text();

donde 1 es el índice del div hijo (ya que el conteo comienza desde cero)

Avatar de usuario de Teja Kantamneni
Teja Kantamneni

Prueba esto…

var text_val = $('#first > #second_child').text();

Avatar de usuario de Buhake Sindi
buhake sindi

Simple,

var text_val = $('#second_child').text();

O tu cambio,

var text_val = $('#first').children('#second_child').text();

Esto devolverá “B” de div de id “segundo_niño”

ACTUALIZAR Cambió la segunda solución a children() en vez de nextAll().

  • Los documentos de JQuery indican que nextAll atraviesa hermanos, no hijos.

    – Juan Pescador

    22 de febrero de 2010 a las 18:03

  • Dulce, gracias por señalar esto, cambiaré a children() en cambio.

    – Buhake Sindi

    22 de febrero de 2010 a las 18:31

avatar de usuario de hexacianuro
hexacianuro

Para múltiples elementos con la misma identificación:

var text_val = $('#first').children('#second_child').text();

Para un solo elemento con una identificación particular:

var text_val = $('#second_child').text();

  • Los documentos de JQuery indican que nextAll atraviesa hermanos, no hijos.

    – Juan Pescador

    22 de febrero de 2010 a las 18:03

  • Dulce, gracias por señalar esto, cambiaré a children() en cambio.

    – Buhake Sindi

    22 de febrero de 2010 a las 18:31

……..

var text_val = $('#first').children('#second_child').text();

  • Los documentos de JQuery indican que nextAll atraviesa hermanos, no hijos.

    – Juan Pescador

    22 de febrero de 2010 a las 18:04

¿Ha sido útil esta solución?