web-dev-qa-db-fra.com

Obtenir des valeurs de label à l'aide de jQuery

Je veux obtenir la valeur mensuelle et annuelle de l’étiquette. Comment puis-je obtenir ces en utilisant jQuery?

<label year="2010" month="6" id="current Month"> June &nbsp;2010</label>
9
Pankaj

Premièrement, je ne pense pas que les espaces pour un identifiant soient valides.

Donc, je changerais l'id pour ne pas inclure d'espaces.

<label year="2010" month="6" id="currentMonth"> June &nbsp;2010</label>

alors le code jquery est simple (gardez à l’esprit, il vaut mieux aller chercher l’objet jquery une fois et l’utiliser encore et encore)

var label = $('#currentMonth');
var month = label.attr('month');
var year = label.attr('year');
var text = label.text();
18
Gavin Mogan

Vous pouvez utiliser la méthode attr . Par exemple, si vous avez un objet jQuery appelé label, vous pouvez utiliser ce code:

console.log(label.attr("year")); // logs the year
console.log(label.attr("month")); // logs the month
2
icktoofay

Je change votre identifiant en current-month (n'ayant pas d'espace)

alert($('#current-month').attr('month'));
alert($('#current-month').attr('year'));
1
Kevin Le - Khnle

Utilisez .attr

$("current_month").attr("month")
$("current_month").attr("year")

Et changez l'identifiant des étiquettes en

<label year="2010" month="6" id="current_month"> June &nbsp;2010</label>
1
nebkat

Essaye ça:

var label = $('#currentMonth').text()
0
DON

Bien que cette question soit plutôt ancienne et qu’elle ait reçu une réponse, j’ai pensé prendre le temps de proposer quelques options qui n’ont pas encore été abordées dans les autres réponses.

Étant donné le code HTML corrigé (camelCasing la valeur d'attribut id) de:

<label year="2010" month="6" id="currentMonth"> June &nbsp;2010</label>

Vous pouvez utiliser des expressions régulières pour extraire le nom du mois et l'année:

// gets the eleent with an id equal to 'currentMonth',
// retrieves its text-content,
// uses String.prototype.trim() to remove leading and trailing white-space:
var labelText = $('#currentMonth').text().trim(),
    // finds the sequence of one, or more, letters (a-z, inclusive)
    // at the start (^) of the string, and retrieves the first match from
    // the array returned by the match() method:
    month = labelText.match(/^[a-z]+/i)[0],
    // finds the sequence of numbers (\d) of length 2-4 ({2,4}) characters,
    // at the end ($) of the string:
    year = labelText.match(/\d{2,4}$/)[0];

var labelText = $('#currentMonth').text().trim(),
    month = labelText.match(/^[a-z]+/i)[0],
    year = labelText.match(/\d{2,4}$/)[0];

console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label year="2010" month="6" id="currentMonth"> June &nbsp;2010</label>

Cependant, au lieu d'expressions régulières, vous pouvez utiliser des attributs data-* personnalisés (qui fonctionnent dans HTML 4.x, bien qu'ils soient invalides sous le doctype, mais qu'ils soient valides sous HTML 5):

var label = $('#currentMonth'),
    month = label.data('month'),
    year = label.data('year');

console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-year="2010" data-month="6" id="currentMonth"> June &nbsp;2010</label>

Notez que ceci produira 6 (pour le data-month), plutôt que 'June' comme dans l'exemple précédent, bien que si vous utilisez un tableau pour lier des nombres à des noms de mois, cela peut être résolu facilement:

var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    label = $('#currentMonth'),
    month = monthNames[+label.data('month') - 1],
    year = label.data('year');

console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-year="2010" data-month="6" id="currentMonth"> June &nbsp;2010</label>

De même, ce qui précède pourrait être facilement transcrit dans le DOM natif (dans les navigateurs compatibles):

var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    label = document.getElementById('currentMonth'),
    month = monthNames[+label.dataset.month - 1],
    year = label.dataset.year;

console.log(month, year);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-year="2010" data-month="6" id="currentMonth"> June &nbsp;2010</label>

Références:

0
David Thomas
var label = $('#current_month');
var month = label.val('month');
var year = label.val('year');
var text = label.text();
alert(text);

<label year="2010" month="6" id="current_month"> June &nbsp;2010</label>
0
hari