2011-12-14 3 views
2

に属性は、私は私のような何かを行うことができれば、それは方法がより便利になりそうはJSON

var row = $('#x') 

var x = { 
    id : row.data('id'), 
    prop1: row.data('prop1'), 
    prop2: row.data('prop2'), 
}; 

のようなデータを取得することができますjQueryのでは、この

<div id="x" data-id='1' data-prop1='peace' data-prop2='out'>Text</div> 

を持っていると言いますこの

誰でもこれを行う方法は分かりますか?

EDIT:

私はその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); 
         } 
        }); 
       } 
} 

EDIT:私の '作業' ソリューション

私はそれは私が最初のデータ・オブジェクトのうち、

を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

+1

は、clickイベントが発生したときに(chrome btwを使用して)deleteAction Uriへのポストの代わりに 'id =" x "' not 'id ="#x "' – zzzzBov

+0

ページが入るPOSTペイロードとPOSTイベントを無限ループで再発行します。 – Peter

答えて

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__']で削除できません。

+0

はい、私の質問は私の問題が何かを説明していないことに気付きました。 – Peter

+0

__proto__は問題ではありません。問題を引き起こしているこのjQueryプロパティがあります...私の編集を参照してください – Peter