我需要从HTML元素传递数据并将其序列化。目前,我可以通过命名HTML标记中的每个单独属性来实现。但它似乎冗长而复杂。
<a data-type="2" data-post="101" data-parent="100">Up</a>
var myData = $(this).data("type")+$(this).data("parent")+$(this).data("post")
我可以通过一次调用传递所有数据,而不是命名每个单独的属性吗?例如:
var myData = $(this).data(all the attributes go here in some sort of string/serialized string)
答案 0 :(得分:4)
注意:这需要jQuery 1.4.4
你可以这样做:
var myData = $(this).data();
var str = '';
for(var i in myData) {
if(myData.hasOwnProperty(i)) {
str += myData[i];
}
}
// generates "2101100"
但请注意,data()
可能只返回HTML数据属性。
根据您希望序列化数据的方式,JSON.stringify可能也适合您(生成JSON字符串):
var myData = $(this).data();
var str = JSON.stringify(myData);
// generates: {"type":2,"post":101,"parent":100}