Вы пытаетесь сослаться на settings
вне функции, в которой оно определено. Вы определили settings
как локальную переменную в функции, которую вы назначаете для $.fn.MyjQueryPlugin
, но затем вы используете ее из функции, которая не закрывается над этой локальной переменной.
Вы можете создать новую complete
функцию для каждого вызова MyjQueryPlugin
, которая закрывается на settings
:
(function($) {
$.fn.MyjQueryPlugin = function(options) {
var defaults = {
onEnd: function(e) {}
};
var settings = $.extend({}, defaults, options);
return this.each(function() {
// do stuff (complete() gets called here)
});
// `complete` now closes over `settings`
function complete(e){
settings.onEnd.call(this); // <- the error?
}
};
})(jQuery);
... но, конечно, это включает создание функции. Может быть, это нормально, зависит от того, что делает плагин.
Альтернативно, передайте settings
в complete
в качестве аргумента.