jquery - 如何将对象添加到 jQuery 对象以便我稍后可以检索它?

标签 jquery

发生情况的示例:

> $('#start_date').dateTime = {bacon:5, myFunc: function() { ... }}
Object {bacon: 5, myFunc: function}
> $('#start_date').dateTime
undefined

如果我使用相同的选择器,我希望能够检索我的“bacon”对象。

我发现 $() 每次都返回不同的对象 - 有解决方法吗?

我知道我可以使用 .data,但 API 不太好。我必须执行 $('#start_date').data('dateTime').myFunc() 而不是 $('#start_date').dateTime.myFunc().

最佳答案

如果你这样做,你会感觉好一点吗?

$('#start_date').data().dateTime.myFunc()


或者,您可以扩展 jQuery 让您的生活更轻松,或者让 jQuery 按照您喜欢的方式工作

在这里,我制作了一个为您量身定制的小插件,以便您可以传入点符号字符串来检索您想要的数据。在本例中,它返回一个函数,因此我们可以直接调用它。

演示:http://jsfiddle.net/terryyounghk/8tWLn/

插件代码

// Small plugin
$.fn.myData = function (namespace) {
    var namespaces = namespace.split('.'),
        data = this.data();
    $.each(namespaces, function (i, that) {
        data = data[that];
    });
    return data;
}

使用示例

// set your data
$('#start_date').data('dateTime', {
    bacon:5, 
    myFunc: function() { 
        alert('mmm, bacon') 
    }
});


// call your function, note the dot notation
$('#start_date').myData('dateTime.myFunc')(); // better?

这里的哲学是,如果我们不断重复一些事情,那么一定有一些愚蠢的事情发生。 有没有办法扩展 jQuery,让我的生活更轻松?你来评判。

就我个人而言,我不喜欢这个插件。如果我正在编写单行代码,我更喜欢我的第一个建议。但谁知道呢?您可能喜欢后者。

关于jquery - 如何将对象添加到 jQuery 对象以便我稍后可以检索它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241213/

相关文章:

javascript - 切换后设置 Iframe 大小

javascript - JQuery隐藏/显示最接近的div

jquery - 根据部分href选择链接

javascript - JQuery 使用引导样式添加元素

jquery - 通过每次匹配时删除 td 来优化算法

php - 删除输入中的 "Search"文本,仅适用于一个搜索框,不适用于所有搜索框

javascript - 如何使用jquery获取div的id?

javascript - jQuery 的 IE GIF/PNG 透明度问题

javascript - 一些图片不显示在 iphone 布局上

javascript - 加载后编辑框架项目