我有这个HTML动态生成通过JavaScript:
$(".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>
当我在click事件中写入alert($(this).prop("data-id"))
时,它是未定义的,但是当我这样做时,alert($(this).data("id"))
会像预期的那样给出**"2"。
如果我将属性data-id
更改为data-TaskId
,则prop()
和data()
都返回undefined**。
有人能解释一下为什么会这样吗?
JSFiddle Demo
4条答案
按热度按时间ccrfmcuu1#
尝试使用
.attr()
而不是.prop()
。其次,TaskId应写入lowercase
。请参见以下内容:-aemubtdh2#
使用
attr
方法代替prop。js81xvg63#
HTML5数据属性必须为小写,无法加载驼峰式属性
http://www.sitepoint.com/use-html5-data-attributes/
你也可以使用$(“selector”).data(“没有数据的小写属性-”)
bq8i3lrv4#
您的
data-*
属性未分配给DOM元素属性。使用
attr()
而不是prop()
:您的
data-TaskId
数据属性将被转换为小写。jQuery的.data()
API仅使用大写字母将连字符化的属性data-task-id
转换为驼峰式属性:.data().taskId
JSFiddle