$ (this) .val () ne fonctionne pas pour obtenir du texte de span en utilisant jquery

97

En donnant ce html, je veux en récupérer "August" quand je clique dessus:

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

j'ai essayé

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

mais ne semble pas fonctionner

Léora
la source

Réponses:

210

Au lieu d' .val()utiliser .text(), comme ceci:

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

Ou dans jQuery 1.7+, utilisez on()tel quel live:

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

.val()est pour les éléments de type d'entrée (y compris les zones de texte et les listes déroulantes), puisque vous avez affaire à un élément avec un contenu textuel, utilisez .text()ici.

Nick Craver
la source
3
REMARQUE: .live()est obsolète dans 1.7 et supprimé dans 1.9+
Darren
Les .html () et .text () ont fonctionné pour mon élément span.
lft93ryt
20

Je pense que tu veux .text():

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

Pour récupérer le texte d'une valeur de span générée automatiquement, procédez comme suit:

var al = $("#id-span-name").text();    
alert(al);
Chevalier sacré
la source
5

-Aucun de ce qui précède n'a toujours fonctionné pour moi. Voici donc la solution que j'ai élaborée qui fonctionne de manière cohérente sur tous les navigateurs car elle utilise des fonctionnalités de base. J'espère que cela peut aider les autres. Utilisation de jQuery 8.2

1) Récupérez l'objet jquery pour "span". 2) Obtenez l'objet DOM d'en haut. En utilisant jquery .get (0) 3) En utilisant le innerText de l'objet DOM, récupérez le texte.

Voici un exemple simple

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

HTML

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

Vous pouvez utiliser .html()pour obtenir le contenu des éléments spanet ou div.

exemple:

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

Et c'est parti:

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

J'espère que ça aide;)

praguan
la source
1

.val()est pour les éléments d'entrée, utilisez à la .html()place

Graycrow
la source