$ (this) .val () no funciona para obtener texto de span usando jquery

97

Dando este html, quiero tomar "August" cuando hago clic en él:

<span class="ui-datepicker-month">August</span>

Lo intenté

$(".ui-datepicker-month").live("click", function () {
    var monthname =  $(this).val();
    alert(monthname);
});

pero no parece estar funcionando

leora
fuente

Respuestas:

210

En lugar de .val()usar .text(), así:

$(".ui-datepicker-month").live("click", function () {
    var monthname =  $(this).text();
    alert(monthname);
});

O en jQuery 1.7+ use on()como liveestá en desuso:

$(document).on('click', '.ui-datepicker-month', function () {
    var monthname =  $(this).text();
    alert(monthname);
});

.val()es para elementos de tipo de entrada (incluidas áreas de texto y menús desplegables), ya que se trata de un elemento con contenido de texto, utilice .text()aquí.

Nick Craver
fuente
3
NOTA: .live()está obsoleto en 1.7 y eliminado en 1.9+
Darren
Tanto .html () como .text () funcionaron para mi elemento span.
lft93ryt
20

Creo que quieres .text():

var monthname = $(this).text();
Matthew Jones
fuente
8

Para recuperar el texto de un valor de intervalo generado automáticamente, simplemente haga esto:

var al = $("#id-span-name").text();    
alert(al);
Caballero Santo
fuente
5

-Ninguno de los anteriores funcionó constantemente para mí. Así que aquí está la solución que encontré que funciona de manera consistente en todos los navegadores, ya que utiliza una funcionalidad básica. Espero que esto pueda ayudar a otros. Usando jQuery 8.2

1) Obtenga el objeto jquery para "span". 2) Obtenga el objeto DOM de arriba. Usando jquery .get (0) 3) Usando innerText del objeto DOM, obtenga el texto.

He aquí un ejemplo sencillo

var curSpan = $(this).parent().children(' span').get(0);
var spansText = curSpan.innerText;

HTML

<div >
<input type='checkbox' /><span >testinput</span> 
</div>
Farjad
fuente
4

Puede utilizar .html()para obtener contenido de spanyo divelementos.

ejemplo:

    var monthname =  $(this).html();
    alert(monthname);
Ari
fuente
3

Aquí vamos:

$(".ui-datepicker-month").click(function(){  
var  textSpan = $(this).text();
alert(textSpan);   
});

Espero eso ayude;)

praguan
fuente
1

.val()es para elementos de entrada, utilice .html()en su lugar

cuervo gris
fuente