web-dev-qa-db-fra.com

jQuery: attribut de données

Dans mon html, j'ai un élément span:

<span class="field" data-fullText="This is a span element">This is a</span>

Et je veux obtenir l'attribut data-fullText. J'ai essayé ces deux méthodes, mais elles n'ont pas fonctionné (les deux retournent undefined):

$('.field').hover(function () {
    console.log('using prop(): ' + $(this).prop('data-fullText'));
    console.log('using data(): ' + $(this).data('fullText'));
});

Ensuite, j'ai cherché et trouvé ces questions: Comment obtenir l'attribut data-id? et jquery ne peut pas obtenir la valeur d'attribut de données .
Les deux réponses sont "Use .attr('data-sth') or .data('sth')".
Je sais que .attr() est obsolète (dans jquery-1.11.0, que j’utilise), mais j’ai cependant essayé.
Et ça a fonctionné!

Quelqu'un peut-il expliquer pourquoi?

64
Al.G.

Vous pouvez utiliser la fonction .attr() :

$(this).attr('data-fullText')

ou si vous minuscule le nom de l'attribut:

data-fulltext="This is a span element"

alors vous pouvez utiliser la fonction .data() :

$(this).data('fulltext')

La fonction .data() attend et fonctionne uniquement avec les noms d'attribut en minuscule.

129
Darin Dimitrov

1. Essayez ceci: .attr ()

  $('.field').hover(function () {
    var value=$(this).attr('data-fullText');
  $(this).html(value);
});

DEMO 1:http://jsfiddle.net/hsakapandit/Jn4V3/

2. Essayez ceci: .data ()

$('.field').hover(function () {
    var value=$(this).data('fulltext');
  $(this).html(value);
});

DEMO 2:http://jsfiddle.net/hsakapandit/Jn4V3/1/

4
mrdeveloper

Ça marche pour moi

$('.someclass').click(function() {
    $varName = $(this).data('fulltext');
    console.log($varName);
});
1
Jack Barham

Modifiez les identifiants et les attributs de données à votre guise! 

  <select id="selectVehicle">
       <option value="1" data-year="2011">Mazda</option>
       <option value="2" data-year="2015">Honda</option>
       <option value="3" data-year="2008">Mercedes</option>
       <option value="4" data-year="2005">Toyota</option>
  </select>

$("#selectVehicle").change(function () {
     alert($(this).find(':selected').data("year"));
});

Voici l'exemple de travail: https://jsfiddle.net/ed5axgvk/1/

0
curiousBoy

Voici ce que je suis venu avec:

		$(document).ready(function(){
		
		$(".fc-event").each(function(){
		
			console.log(this.attributes['data'].nodeValue)	
		});
    
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div id='external-events'>
			<h4>Booking</h4>
			<div class='fc-event' data='00:30:00' >30 Mins</div>
			<div class='fc-event' data='00:45:00' >45 Mins</div>
</div>

0
gsam01