1

jqueryのhtml入力からデータ属性を見つけようとしています。$(this).attr("data-jsonid");以下のコードで使用 します。

$.fn.serializeObject = function () {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function () 
        {
            if(!isNaN(this.name))
            {
                var currentId = $(this).attr("data-jsonid");

                if (currentId !== undefined)
                {
                    alert(currentId);
                }
                if (o[this.name] !== undefined) 
                {
                    if (!o[this.name].push) 
                    {
                        o[this.name] = [o[this.name]];
                    }
                    o[this.name].push(this.value || '');
                } 
                else 
                {
                    o[this.name] = this.value || '';
                }
            }
        });
        return o;
    };
    $(function () {
        $('form').submit(function () {
            $('#result').text(JSON.stringify($('form').serializeObject()));
            return false;

すべてのテキスト入力に data-jsonid 属性があることを HTML ソースで確認できますが、javascript/jquery でそれが何であるかを特定することはできません。名前と値はデバッグ時にしかわかりません。

この説明を支援するために jsfiddle プロジェクトを作成しましたhttp://jsfiddle.net/mvargos/dSz38/。"Submit Query" をクリックすると、ページの json が出力されます。私の最終目標は、data-jsonid 属性を読み取れるようにして、この属性が存在する場合に json を保存する方法をフォーマットできるようにすることです。現在、jsonは次のように保存されています

`{"1028":["Matt","Varg","27","2","Cris","Vargz","23","A"]}`

しかし、data-jsonid を特定できたら、次のような json を作成したいと思います。

`"1028":[{"id":"1", "tenantInfo":["Matt","Varg","27","2"]},{"id":"2", "tenantInfo":["Cris","Vargz","23","A"]}]`

構文が間違っているのか、それとも他のエラーを起こしているのかわかりません。ご協力ありがとうございます。この説明が不十分な場合はお知らせください。

4

3 に答える 3

2
var a = this.serializeArray();

上記の行は、オブジェクトをシリアル化します..

したがって、基本的には、jquery オブジェクトarray membersではないオブジェクトを繰り返し処理しています。

$.each(a, function ()   

$(this)は、このコンテキストでは適切なセレクターではありません。

于 2013-01-07T22:24:24.907 に答える
2

シリアル化する前に、次の jQuery バージョンを「覚えておく」ことができますthis

$.fn.serializeObject = function() {

   var $this = $(this);

   ...

そして、それを jQuery オブジェクトとして使用したい場合は、$this を使用できます。

   $this.data('some-data-attr');
于 2013-01-07T22:30:20.947 に答える
1

thisそのコンテキストでは、入力要素ではなく、単なるオブジェクトです。その情報を取得するには、入力に戻る必要があります。

$("[name=" + this.name + "]").data("jsonid");
于 2013-01-07T22:24:33.620 に答える