如何在HTML元素属性上存储jquery对象?

时间:2012-11-06 22:23:33

标签: javascript jquery

我有一个<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格式但是它会引发错误。

1 个答案:

答案 0 :(得分:4)

您可以利用jQuery中的data()方法,这可能会为您带来最有利的结果,并使您能够避免不必要的自定义序列化。