jQuery: получить атрибут данных


в моем html у меня есть span элемент:

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

и я хочу получить . Я попробовал эти два способа, но они не сработали (оба возвращают undefined):

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

затем я искал и нашел эти вопросы:как получить атрибут data-id? и jquery не может получить значение атрибута данных.
Оба ответа являются "Use .attr('data-sth') or .data('sth')".
Я знаю, что .attr() является устаревшим (в jquery-1.11.0, который я использую), но, тем не менее, я попробовал.
И это сработало!

может кто-нибудь объяснить, почему?

5 60

5 ответов:

вы могли бы использовать .attr():

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

или если вы строчные буквы имя атрибута:

data-fulltext="This is a span element"

затем вы могли бы использовать .data():

$(this).data('fulltext')

The .data() функция ожидает и работает только с именами атрибутов в нижнем регистре.

1. Попробуйте это: .attr ()

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

демо 1: http://jsfiddle.net/hsakapandit/Jn4V3/

2. Попробуйте это: .data ()

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

демо 2: http://jsfiddle.net/hsakapandit/Jn4V3/1/

это работает для меня

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

изменить идентификаторы и атрибуты данных, как вы хотите!

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

вот рабочий пример:https://jsfiddle.net/ed5axgvk/1/

вот что я придумал:

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