$ (this) .val () não funciona para obter texto de span usando jquery


97

Fornecendo este html, quero pegar "August" dele quando clicar nele:

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

eu tentei

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

mas não parece estar funcionando

Respostas:


210

Em vez de .val()usar .text(), assim:

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

Ou no jQuery 1.7+, use on()como liveestá obsoleto:

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

.val()é para elementos de tipo de entrada (incluindo áreas de texto e menus suspensos), uma vez que você está lidando com um elemento com conteúdo de texto, use .text()aqui.


3
NOTA: .live()foi descontinuado em 1.7 e removido em 1.9+
Darren

Ambos .html () e .text () funcionaram para meu elemento span.
lft93ryt


8

Para recuperar o texto de um valor de span gerado automaticamente, faça o seguinte:

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

5

-Nenhuma das opções acima funcionou consistentemente para mim. Então, aqui está a solução que desenvolvi que funciona de forma consistente em todos os navegadores, pois usa funcionalidades básicas. Espero que isso possa ajudar outras pessoas. Usando jQuery 8.2

1) Obtenha o objeto jquery para "span". 2) Obtenha o objeto DOM de cima. Usando jquery .get (0) 3) Usando o innerText do objeto DOM, obtenha o texto.

Aqui está um exemplo simples

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

HTML

<div >
<input type='checkbox' /><span >testinput</span> 
</div>

4

Você pode usar .html()para obter conteúdo de spane ou divelementos.

exemplo:

    var monthname =  $(this).html();
    alert(monthname);

3

Aqui vamos nós:

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

Espero que ajude;)


1

.val()é para elementos de entrada, use em .html()vez disso

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.