如何通过插件向元素添加访问器方法?

时间:2011-04-19 15:37:25

标签: jquery jquery-plugins

我有一个插件,可以将选定的值从下拉菜单转换为连接字符串,以便在文本字段中使用。

插件的调用如下:

info = $('select');
info.my_plugin({ /* plugin options */ });

我想要做的是在该元素上添加一个访问器方法(最好是jQuery集合),以便稍后我可以调用(在上面的代码之后):

info.get_values();

将调用私有方法(在插件中定义)来返回jQuery元素的当前设置值。

如何修改插件才能执行此操作?我的插件目前使用此模式设置:

$.fn.my_plugin = function(options) {};

2 个答案:

答案 0 :(得分:2)

我建议使用jQuery的.data。像

$.fn.myPlugin = function (options) {

    var handler = {};

    this.data('myPlugin', handler);

    handler.options = options;

    handler.getValues = function () {
        // return some values
    };

    return this;

};

这样,您的插件公开的API保持隔离和清洁。

然后您的用户可以

$('select').myPlugin();

// later somewhere else
$('select').data('myPlugin').getValues();

注意:很久以前我从jQuery工具中接受了这个想法。不知道他们是否还在这样做。

答案 1 :(得分:0)

您必须使用另一个函数扩展$ .fn对象,如下所示:

$.fn.my_plugin = function(options) {

    // ...your plugin code, setting the var "concatenatedDropDownString"

    $.fn.get_values = function(){
        return concatenatedDropDownString;
    };

    return concatenatedDropDownString;
};