代码之家  ›  专栏  ›  技术社区  ›  Brandon Montgomery

自定义jquery插件使用错误-<public function>不是函数

  •  0
  • Brandon Montgomery  · 技术社区  · 15 年前

    我编写了一个jquery插件,如下所示:

    jQuery(function($) {
      $.fn.myPlugin = function() {
        return this.each(function () {
          this.publicFunction = function() {
            alert('test');
          };
    
          return this;
        });
      };
    });
    

    我的HTML页面上的javascript如下所示:

      var myPluginDiv = $("#divTest").myPlugin();
      myPluginDiv.publicFunction();
    

    我得到一个错误“myplugindiv.additem不是一个函数”,它显然是一个公共函数。为什么不起作用?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Brandon Montgomery    15 年前

    知道了!我知道我以前有过这个问题,我只是不记得我是怎么解决的。关键是要用 .get(0) 在我的插件调用结束时,如下所示:

    var myPluginDiv = $("#divTest").myPlugin().get(0);
    

    然后我可以打电话 myPluginDiv.publicFunction() 没问题。

        2
  •  0
  •   tvanfosson    15 年前

    您要将函数添加到dom元素,而不是返回jquery对象。 myPluginDiv 是jquery对象。我认为以下任何一种方法都有效:

    应用于返回的jquery对象:

    jQuery(function($) { 
      $.fn.myPlugin = function() { 
          this.publicFunction = function() {
              alert('test');
          }
          return this;
      };
    });
    
    var a = $('selector').myPlugin();
    a.publicFunction();
    

    或作为原始问题应用于dom对象:

    myDivPlugin.get(0).publicFunction();
    

    myDivPlugin.each( function() { this.publicFunction(); } );