$('div')
является слишком общим селектора. В this fiddle с ровно одним элементом ваш код работает нормально. Однако, в this fiddle с несколькими элементами, ваш код не:
<div></div>
<div data-test="something"></div>
<script>alert($('div').data('test'));</script>
$('div')
выбирает каждый <div>
на странице, но .data
только получает значение первого элемента в коллекции JQuery:
... вернуть значение в названном хранилище данных для первого элемента в наборе согласованных элементов.
Таким образом, вы пытаетесь получить атрибут data-test
для первого элемента в коллекции, которая, в моем примере выше, не имеет такого атрибута. Вам нужно сделать селектор более конкретным, чтобы выбрать нужный элемент. Вы можете попробовать:
- с использованием
id
на элементе и выбрав его с $('div#someIdOnTheDiv')
- менее предпочтительно, возьмите любой
<div>
, который имеет data-test
атрибут: $('div[data-test]')
Оберните ваш код с документом готовым обработчиком. – undefined
Я просто сделал это. Я тестировал его внутри документа, и он также не работал. – lisovaccaro
'.data()' возвращает значение первого совпадающего элемента 'div', если у вас есть другие элементы div (перед целевым элементом), он будет терпеть неудачу. – undefined