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();
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 denext()
— 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)
Teja Kantamneni
Prueba esto…
var text_val = $('#first > #second_child').text();
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
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