![](/img/trans.png)
[英]jQuery Plugin public methods not working when applied to multiple elements
[英]Javascript plugin public methods not working
决定在 vanilla JS 中重建一个 jQuery 插件我遇到了一个问题,我似乎无法让公共方法工作。 所有其他逻辑都有效,但公共方法无效。 我以更新方法为例。
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory(root));
} else if (typeof exports === 'object') {
module.exports = factory(root);
} else {
root.Plug = factory(root);
}
})(typeof global !== "undefined" ? global : this.window || this.global, function(root) {
var _settings;
var defaults = {
// default values
}
function runPlugin(){
alert('it works')
}
var Plug = function(options) {
var Plug = {};
var settings;
_settings = extend(settings || defSettings, options || {});
var init = (function() {
//init logic
runPlugin();
...
}());
Plug.update = function(msg){
alert(msg)
}
}
return Plug;
});
var plug = new Plug({//settings...}); //works
var plug = new Plug().update('test'); //does not work
在Plug
function内,你应该指的是this
不是Plug
的添加方法。 所以
this.update = ...
不是
Plug.update = ....
(请注意,我必须做一些 jiggery-pokery 才能让您的示例运行)
(function(root, factory) { if (typeof define === 'function' && define.amd) { define([], factory(root)); } else if (typeof exports === 'object') { module.exports = factory(root); } else { root.Plug = factory(root); } })(typeof global?== "undefined": global. this.window || this,global; function(root) { var _settings; var defaults = { // default values } function runPlugin(){ alert('it works') } var Plug = function(options) { var settings. _settings = Object,assign(settings || defaults; options || {}); var init = (function() { //init logic runPlugin(); }()). this;update = function(msg){ alert(msg) } } return Plug; }); var plug = new Plug({}). //works var plug = new Plug();update('test');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.