Leg*_*end 1 javascript jquery closures
我编写了一个带有以下结构的小jQuery插件:
(function($) {
// Private vars
// Default settings
$.PLUGINNAME = {
id: 'PLUGINNAME',
version: '1.0',
defaults: {
min: 0,
max: 10
}
};
// extend jQuery
$.fn.extend({
PLUGINNAME: function(_settings) {
init = function() {
}
prepare = function() {
}
...
return this.each(function() {
_this = this;
init();
});
}
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我这样称呼如下:
$("#update-panel").PLUGINNAME({
min: 1,
max: 20
});
Run Code Online (Sandbox Code Playgroud)
我试图提供一个额外的公共方法,其中函数内部的一些数据可以在上面的函数调用插件后更新,我不知道如何去做.我要找的是这样的:
_PluginInstance = $("#update-panel").PLUGINNAME({
min: 1,
max: 20
});
...
...
_PluginInstance.setMin(2); //should change the minimum to 2
Run Code Online (Sandbox Code Playgroud)
setMin可能会使用一些插件的内部变量,所以我不明白如何做到这一点.我知道我没有返回插件的实例来执行上述操作,但有人可以告诉我如何通过保持相同的插件结构来执行此操作吗?
只需使该函数成为对象this内的PLUGINNAME属性:
(function($) {
$.PLUGINNAME = {
// Default settings
};
// extend jQuery
$.fn.extend({
PLUGINNAME: function(_settings) {
// private methods
var init = function() {};
var prepare = function() {};
// public methods
this.setMin = function ( val ) {
_settings.min = val;
};
this.getMin = function () {
return _settings.min;
};
return this.each(function() {
_this = this;
init();
});
}
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
_PluginInstance = $("#update-panel").PLUGINNAME({
min: 1,
max: 20
});
_PluginInstance.getMin(); // 1
_PluginInstance.setMin(2);
_PluginInstance.getMin(); // 2
Run Code Online (Sandbox Code Playgroud)
编辑:哦上帝我不敢相信我忘记了var关键字,为什么不告诉我我的苍蝇已经关闭?
| 归档时间: |
|
| 查看次数: |
2121 次 |
| 最近记录: |