我在 jsfiddle 中尝试了这个并且它有效但是我无法让数据属性在我的站点中工作。在这种情况下,我在警报中得到“未定义”:
<div data-test="something"></div>
<script>alert($('div').data('test'));</script>
这可能是什么原因?
$('div')
选择器太笼统了。在这个只有一个元素的小提琴中,您的代码运行良好。但是,在这个包含多个元素的小提琴中,您的代码失败了:
<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]')
在 jsfiddle 中,您已准备好 dom。而且我认为您只需将代码复制粘贴到脚本标记中。
你在dom ready
这里失踪了
<script>
$(document).ready(function(){
alert($('div').data('test'));
});
</script>
您的页面中有很多内容div's
,并且.data()
会提醒第一个 div。因此,您有两种选择来获取数据值。
$(document).ready(function(){
alert($('div.entry-content').children().data('test'));
});
注意:我刚刚使用了您在站点中使用的父 div 类。
id
或放入class
div 并使用它来提醒数据值。代码:
<div id="datatest" data-test="something"></div>
$( document ).ready(function() {
alert($('div#datatest').data('test'));
});