如何将HTML数据属性为JSON
问题描述:
说我有这个如何将HTML数据属性为JSON
<div id="x" data-id='1' data-prop1='peace' data-prop2='out'>Text</div>
jQuery中我能得到这样的数据,以便
var row = $('#x')
var x = {
id : row.data('id'),
prop1: row.data('prop1'),
prop2: row.data('prop2'),
};
这将是方式更方便,如果我可以做类似这
var row = $('#x');
var x = row.data.serialize();
任何人都知道如何做到这一点?
编辑:
我忘了提,VAR X = row.data()将做的工作,但有这一切jQuery的垃圾信息。
我想发送数据作为ajax请求的一部分,一旦我得到它。
例如,
remove: function (row, g, o) {
if (confirm(o.deleteConfirmation)) {
var url = o.deleteAction;
var data = row.data();
$.ajax({
url: url,
type: 'POST',
// THIS WORKS
// data: {
// id: row.data('id'),
// applicationId: row.data('applicationId')
// },
// THIS DOESN'T
data : data,
success: function (result) {
g.html(result.Html);
methods.rebind(g, o);
}
});
}
}
编辑:我的 '工作' 解决方案
我把它杀死了jQuery {一定数量}事情出的数据的工作对象
首先我从here得到这个
if (!String.prototype.startsWith) {
String.prototype.startsWith = function(str) {
return !this.indexOf(str);
};
}
然后,我不得不这样做:
var rowData = row.data();
var data = {};
for(var propertyName in rowData) {
if(!propertyName.startsWith('jQuery'))
data[propertyName] = rowData[propertyName];
}
答
您可以致电.data()
不带参数,它应该与所有元素的属性返回一个对象:
var row = $('#x'); // Won't work as your element's ID is invalid, but oh well.
var x = row.data();
演示:http://jsfiddle.net/kYf3t/1/
任何人都可以帮助删除__proto__
财产?我无法通过delete x['__proto__']
将其删除。
你能详细阐述一下你的意思是“它不工作”吗? – Blender 2011-12-14 00:40:10
应该是'id =“x”`not`id =“#x”` – zzzzBov 2011-12-14 00:42:41