我有一个<select>
表单元素,我基于循环遍历jQuery对象数组创建多个<option>
子元素。
我想在<option>
本身上存储与<option>
相关联的每个jQuery,我想这是一个属性。因此,当我获得更改事件时,我可以拉出<option>
所基于的jQuery对象。
我以为我可以使用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项设置为原始jquery对象 - 或以某种方式重新创建它。我甚至尝试过eval()
传入项目,因为它是JSON格式但是它会引发错误。