为什么 .data() 适用于一组元素,但不适用于单个元素
Why does .data() work on a set collection of elements, but not on a single element?
我的网页上有一个div列表,所有div都有数据属性data-duration
。
当我在所有div 上运行.data("duration")
时,我得到了第一个div 的data-duration
。当我在单个元素上运行它时,出现错误。
下面是一个示例:
$(".reservation").data("duration")
>> 170
$(".reservation")[0].data("duration")
>> Uncaught TypeError: undefined is not a function
此代码也会失败:
$(".reservation").each(function(index, elem) {
return console.log(elem.data("duration"));
});
我在单个元素上.attr("data-duration")
时遇到类似的错误。
为什么我无法获取单个元素的数据属性?
你正在使用 [] 从 jQuery 集合中获取原始 DOM 元素。
使用 .eq(0)
或 first()
获取第一个 "jQuery" 元素:
$(".reservation").eq(0).data("duration")
或
$(".reservation").first().data("duration")
您的第二段代码失败,因为您再次引用 DOM 元素(作为 elem 传递)而不是 jQuery 元素:
请尝试改用this
:http://jsfiddle.net/TrueBlueAussie/rd55sdbd/2/
$(".reservation").each(function() {
console.log($(this).data("duration"));
});
每个方法的elem
都是纯HTML元素而不是jQuery对象,因此您的代码无法正常工作。请尝试以下代码。
网页代码
<div class="reservation" data-duration="10"></div>
<div class="reservation" data-duration="20"></div>
<div class="reservation" data-duration="30"></div>
<div class="reservation" data-duration="40"></div>
<div class="reservation" data-duration="50"></div>
JavaScript 代码:
$('.reservation').each(function(index,elem){
alert($(elem).data('duration'));
});
吉斯菲德尔
相关文章:
- 制作 JavaScript 代码适用于任何元素
- 在调整大小和加载时移动 DOM 元素.仅适用于调整大小
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- 我想放一个JS函数,它适用于列表的所有元素,但我可以't将其复制到每个元素中
- JQuery验证仅适用于提交的表单中的第一个元素.[打算验证所有内容]
- 为什么 .data() 适用于一组元素,但不适用于单个元素
- 如何让我的 jQuery 代码适用于所有元素
- 绑定函数仅适用于最后一个元素
- jQuery ID 选择器仅适用于第一个元素
- document.getElementById 适用于一个表单元素,但不适用于另一个表单元素
- 弹出模式仅适用于表格中的第一个元素,第二次单击后不会再次打开
- 代码仅适用于找到的第一个元素,存在多个具有相同 id 的元素
- jQuery.data() 仅适用于附加的元素
- javascript函数只适用于第一个元素
- 在backbonejs视图中,keypress/keyup/keydown事件是否仅适用于输入,而不适用于其他元素
- JQuery fadeOut仅适用于第一个元素
- JS函数只适用于一个(第一个)元素
- aria-expanded和aria-haspopup属性是否适用于元素
- jQuery . addclass()和. removeclass()只适用于元素的第一个实例
- 原型集属性是否适用于元素类选择器