首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试使用jQuery.data() API在jQuery插件中缓存函数

尝试使用jQuery.data() API在jQuery插件中缓存函数
EN

Stack Overflow用户
提问于 2013-04-18 02:55:49
回答 1查看 249关注 0票数 3

请针对下面提到的场景提出解决方案

背景(jQuery插件):

$.fn.myplugin = function (action) {
    if (actions[action]) {
        return actions[action].apply(this, Array.prototype.slice.call(arguments, 1));
    } else if (typeof action === 'object' || !action) {
        return actions.init.apply(this, arguments);
    } else {
        $.error('Action ' + action + ' does not exist on myplugin');
        return this;
    }
};

和variable actions如下所示:

var actions = {
    init: function (options) {
        if (this.length) {
            var settings = $.extend({}, $.fn.myplugin.defaults);
            return this.each(function () {
                if (options) {
                    settings = $.extend(settings, options);
                }

                $(this).data('myplugin', new MyPlugin($(this), settings));
            });
        } else {
            throw new Error('unable to init undefined');
        }
    },
    update: function () {
        ...
    },
    destroy: function () {
        ...
    }
};

MyPlugin看起来像

function MyPlugin($el, settings) {
    var $content = $('.content', $el);

    var a = function setup() { ... };

    var b = function hold() { ... }

    $content.on({
        'click': function(e) { ... },
        'hover': function(e) { ... }
    });
}

我知道我可以将$.cache转储到控制台,并查看.data()中关联的内容。

想要的问题/建议:

如果我调用像$('myEle').myplugin('update')这样的更新函数,那么我需要update function来更改使用.data()创建和缓存的MyPlugin实例的状态。有哪些可能的方法可以做到这一点?

我当前的$('myEle').data('myplugin')结果显示MyPlugin{}在花括号之间没有任何东西。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16067923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档