从附加到页面上多个元素的jQuery插件公开属性

时间:2012-02-21 11:02:27

标签: javascript jquery

有人建议我从jQuery插件中公开属性是首选/标准的结构。

(function($) {
   $.myPlugin = {
       data: {}
   };

    $.fn.myPlugin = function() {
        return this;
    };
})(jQuery);

以上示例通过语法$.myPlugin.data.

公开“数据”

如果插件附加到页面上的多个HTML元素,那么我认为$ .myPlugin.data变得无效,因为它等同于静态变量。

  1. 编写插件的另一种方法是什么.data与特定插件的实例有关?
  2. 如何通过插件外部的代码引用此属性?即。你怎么读这个房产?

2 个答案:

答案 0 :(得分:1)

这会将数据附加到插件操作的每个元素上。

(function($) {
    $.fn.extend({
        myPlugin: function (options) {
            var defaultConfig = {data: {}};
            return this.each(function () {
                $(this).data(
                   "myPlugin", $.extend(defaultConfig, options)
                );
            });
        }
    });
})(jQuery);

例如,当这样调用时:

$("div.foo").myPlugin({option: "value"});

每个<div class="foo">都有自己的

副本
{
   data: {},
   option: "value"
}

位于$(this).data("myPlugin")

答案 1 :(得分:0)

使用回调函数怎么样?

// external code
$('.something').myPlugin({
    onLoad : function(object, data) {
        // use data here
    }
});