jQuery: получить атрибут data
В моем html у меня есть элемент span
:
<span class="field" data-fullText="This is a span element">This is a</span>
И я хочу получить атрибут data-fullText
. Я пробовал эти два способа, но они не работали (оба возвращают 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, который я использую), но, тем не менее, я попробовал его.
И он работает!
Может кто-нибудь объяснить, почему?
Ответы
Ответ 1
Вы можете использовать функцию .attr()
:
$(this).attr('data-fullText')
или если вы нижний регистр имя атрибута:
data-fulltext="This is a span element"
то вы можете использовать функцию .data()
:
$(this).data('fulltext')
Функция .data()
ожидает и работает только с именами нижних регистров.
Ответ 2
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);
});
DEMO 2: http://jsfiddle.net/hsakapandit/Jn4V3/1/
Ответ 3
Это работает для меня
$('.someclass').click(function() {
$varName = $(this).data('fulltext');
console.log($varName);
});
Ответ 4
Измените идентификаторы и атрибуты данных, как хотите!
<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/
Ответ 5
Вот что я придумал:
$(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>