我已经学习了很多关于使用jQuery进行开发的知识,但是我遇到麻烦的一个主题是编写插件。我使用this插件样板来编写我的插件。我想要几个公共方法。
这是我的JS:
(function($) {
$.pluginA = function(element, options) {
var defaults = {
action: function(){}
}
var plugin = this;
plugin.settings = {}
var $element = $(element),
element = element;
plugin.init = function() {
plugin.settings = $.extend({}, defaults, options);
console.log('plugin A called')
}
plugin.method1 = function(){
$element.on('click', function(e){
plugin.settings.action;
e.preventDefault();
})
}
plugin.init();
}
$.fn.pluginA = function(options) {
return this.each(function() {
if (undefined == $(this).data('pluginA')) {
var plugin = new $.pluginA(this, options);
$(this).data('pluginA', plugin);
}
});
}
$.pluginB = function(element, options) {
var defaults = {
action: function(){}
}
var plugin = this;
plugin.settings = {}
var $element = $(element),
element = element;
plugin.init = function() {
plugin.settings = $.extend({}, defaults, options);
console.log('plugin B called')
}
plugin.method1 = function(){
$element.on('click', function(e){
alert("Plugin B action performed.");
e.preventDefault();
})
}
plugin.init();
}
$.fn.pluginB = function(options) {
return this.each(function() {
if (undefined == $(this).data('pluginB')) {
var plugin = new $.pluginB(this, options);
$(this).data('pluginB', plugin);
}
});
}
})(jQuery);
这是HTML:
<a href="#" id="action">Action</a>
<script>
(function($){
$('#action').data('pluginA').method1({
action: $().data('pluginB').method1()
});
})(jQuery);
</script>
我一直得到的错误是Cannot read property '{nameofpublicmethod}' of undefined.
这里究竟没有定义什么?是数据(&#39; pluginA&#39;)还是其他什么?一些帮助将不胜感激!