0

オブジェクトのjQuery配列のループに基づいて複数の子を作成する<select>フォーム要素があります。<option>

に関連付けられた各jQueryをそれ自体に保存したい<option><option>ですが、プロパティとして推測します。そのため、変更イベントが発生すると、元の jQuery オブジェクトを引き出すことができます<option>

attr を使用してオブジェクトを JSON にシリアル化するだけで設定できると思いましたが、機能しません。何か案は?

ここにいくつかのコードがあります:

// creating the select: (data is a jquery array of objects)
    $(data).each(function() {
        var opt = $('<option></option>').val(this[id_property]).html(this[label_property]);
        // preserve the original jquery object on this <option> element:
        opt.attr('json', JSON.stringify(this));
        $(select).append(opt);
    });

// bind the onchange event, and try to recreate that original jquery object
    $(select).bind('change', function(event) {
        // this gives me a ref to the <option> element:
        var val = $(select).find(":selected");
        // now how to get the original jquery object?
        var item = $(val).attr('json');        
    });

var item を元の jquery オブジェクトに設定する最後の行が必要です。または、何らかの形で再作成します。eval()JSON形式であるため、アイテムを渡してみましたが、エラーがスローされます。

4

1 に答える 1

4

jQuery でこのメソッドを利用できますdata()。これにより、最も好ましい結果が得られるだけでなく、不要なカスタム シリアライゼーションを回避することができます。

于 2012-11-06T22:26:45.837 に答える