我在AMD环境中结束了我的jQuery插件。 这是我的样板,
!function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery'], factory);
} else {
factory(root.jQuery);
}
}(this, function($) {
var defaults = {
target: ''
};
var myPlugin = function(options) {
options = $.extend(true, {}, defaults, options);
return options;
};
myPlugin.prototype = {
init: function(options) {
return options;
}
};
$.fn.myPlugin = myPlugin;
});
console.log($.fn.myPlugin.init());
错误,
类型错误:$ .fn.myPlugin.init不是一个函数
的console.log($ fn.myPlugin.init());
任何想法我错误地做了什么? 我怎样才能访问里面的功能myPlugin.prototype = {...}
编辑:
与此测试样板 ,
console.log($('.test li').plugin({
test: 'option1',
test2: 'option2'
}));
结果,
Object[] // why is it empty?
和
console.log($.fn.plugin.someMethod());
结果,
类型错误:$ .fn.plugin.someMethod不是一个函数
的console.log($ fn.plugin.someMethod());
和,
// Plugin methods and shared properties
Plugin.prototype = {
// Reset constructor - http://goo.gl/EcWdiy
constructor: Plugin,
someMethod: function(options) {
return options;
}
};
console.log($.fn.plugin.Plugin.prototype.someMethod("hello world"));
结果,
hello world
和,
var instance = $('.element').data('plugin');
instance.someMethod("hello world");
结果,
类型错误:实例为null,//这是什么意思? 它应该返回“世界你好”,是不是?
instance.someMethod( “世界你好”);
编辑2:
var plugin = $('.element').plugin();
var instance = $('.element').data('plugin',plugin);
console.log(instance); // returns - Object[]
console.log(instance.someMethod("hello world"));
结果,
类型错误:instance.someMethod不是一个函数
的console.log(instance.someMethod( “世界你好”));