$ (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

Leora
fonte

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.

Nick Craver
fonte
3
NOTA: .live()foi descontinuado em 1.7 e removido em 1.9+
Darren
Ambos .html () e .text () funcionaram para meu elemento span.
lft93ryt
20

Eu acho que você quer .text():

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

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

var al = $("#id-span-name").text();    
alert(al);
Holyknight
fonte
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>
Farjad
fonte
4

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

exemplo:

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

Aqui vamos nós:

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

Espero que ajude;)

praguan
fonte
1

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

greycrow
fonte