2011-12-14 48 views
2

說我有這個如何將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]; 
} 
+1

你能詳細闡述一下你的意思是「它不工作」嗎? – Blender 2011-12-14 00:40:10

+1

應該是'id =「x」`not`id =「#x」` – zzzzBov 2011-12-14 00:42:41

回答

5

您可以致電.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__']將其刪除。

相關問題