当我使用.pr()查找自定义数据属性时,为什么jQuery返回undefined
Why does jQuery return undefined when I use .prop() to find a custom data attribute?
我通过JavaScript:动态生成了这个HTML
$(".task-status").live("click", function () {
alert("data-id using prop: " + $(this).prop("data-id"))
alert("data-id using data: " + $(this).data("id"))
alert("data-TaskId using prop: " + $(this).prop("data-TaskId"))
alert("data-TaskId using data: " + $(this).data("TaskId"))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<div class="blue-button-bg task-status" data-id="2" data-TaskId="2">
Scheduled
</div>
当我在点击事件中写alert($(this).prop("data-id"))
时,它是未定义的,但当我写alert($(this).data("id"))
时,它会给我"2〃如预期。
如果我将属性data-id
更改为data-TaskId
,则会为prop()
和data()
返回未定义。
有人能解释为什么会这样吗?
JSFiddle演示
您的data-*
属性未分配给DOM元素属性。
使用attr()
而不是prop()
:
alert("data-id using prop: " + $(this).attr("data-id"))
alert("data-id using data: " + $(this).data("id"))
alert("data-TaskId using prop: " + $(this).attr("data-TaskId"))
alert("data-TaskId using data: " + $(this).data("TaskId"))
您的data-TaskId
数据属性将转换为小写。大写字母仅由jQuery的.data()
API用于将炒作属性data-task-id
转换为大小写属性:.data().taskId
JSFiddle
您更新的FIDDLE:/b>
尝试使用.attr()
而不是.prop()
。其次,TaskId应该用lowercase
编写。见下文:-
$(".task-status").live("click", function () {
alert("data-id using prop: " + $(this).attr("data-id"))
alert("data-id using data: " + $(this).data("id"))
alert("data-TaskId using prop: " + $(this).attr("data-TaskId"))
alert("data-TaskId using data: " + $(this).data("taskid"))
});
使用attr
方法而不是prop。
$(".task-status").live("click", function () {
alert("data-id using prop: " + $(this).attr("data-id"))
alert("data-id using data: " + $(this).data("id"))
alert("data-TaskId using prop: " + $(this).attr("data-TaskId"))
alert("data-TaskId using data: " + $(this).data("TaskId"))
});
HTML5数据属性必须小写,不能加载驼色大小写属性
http://www.sitepoint.com/use-html5-data-attributes/
您还可以使用$("selector").data("lowcase att without data-")
相关文章:
- 序列化数据属性中对象的最可靠方法
- jQuery最近父级的数据属性选择器
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 数据属性仅在切换设备模式下工作
- 函数jquery.html()不提供数据属性集值
- 在数据属性上进行下拉自动选择
- JavaScript-获取数据属性的值返回未定义的值
- 如何替换数据属性中的特定字符串单词
- 使用数据属性将HTML数据复制到另一个元素
- 带有CSS的数据属性就没那么有用了
- 查找所有TD标签并读取其数据属性
- 使用jQuery获取第N个元素的数据属性值
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 数据属性有没有更干净的方法
- 为什么AngularJS在使用ng-bind-html时会去除数据属性
- 为什么jQuery不删除所有数据属性
- 当我使用.pr()查找自定义数据属性时,为什么jQuery返回undefined
- 为什么jQuery会从自定义数据属性中移除方括号
- 为什么从ASP返回数据?.d属性内的.NET页面方法
- 为什么我能够按类比按数据属性更快地选择元素?