如何使用jQuery插件样板调用带有选项的公共方法?

时间:2018-05-15 04:34:08

标签: jquery

我已经学习了很多关于使用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;)还是其他什么?一些帮助将不胜感激!

0 个答案:

没有答案