如何将数据关联到jQuery对象?

前端之家收集整理的这篇文章主要介绍了如何将数据关联到jQuery对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个jQuery对象$myObject,其中包含元素el_1,el_2,…,el_n.干

$myObject.data('foo','bar');

将值’bar’分配给每个元素el_1,el_n的数据属性foo.相反,我想将数据作为单个实体与jQuery对象$myObject相关联.

我想我能做到

$myObject['foo'] = 'bar';

但这可能会导致与jQuery对象的其他属性方法发生冲突.是否有一种“jQuery安全方式”将数据与jQuery对象相关联?

最佳答案
您可以使用jQuery对象引用作为键将该数据存储在您自己的对象中,然后将该对象存储在文档的数据中.就像是:

$.fn.objData = function(key,value) {
    var rootData = $(document).data("jQueryObjectData");
    if (!rootData) {
        $(document).data("jQueryObjectData",rootData = {});
    }
    var objData = rootData[this];
    if (!objData) {
        rootData[this] = objData = {};
    }
    if (typeof value === "undefined") {
        return objData[key];
    }
    objData[key] = value;
    return this;
};

然后您可以按预期使用该方法

$myObject.objData("foo","bar");

然后:

var foo = $myObject.objData("foo");

当然,$myObject必须引用两个调用中的同一个对象,因为包含相同元素的两个不同的jQuery对象仍将被视为不同的键.

这种方法的一个潜在问题是根数据对象将保持对用作键的jQuery对象的引用,从而防止垃圾收集器处理它们.它可能会成为一个问题,具体取决于您创建的jQuery对象的数量以及您使用该方法的方式.

猜你在找的jQuery相关文章