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

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.


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


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);

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>

4

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

exemple:

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

3

Et c'est parti:

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

J'espère que ça aide;)


1

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.