自定义jQuery插件使用错误 - <public function =“”>不是函数</public>

时间:2009-12-31 17:54:12

标签: jquery jquery-plugins

我写了一个像这样的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 个答案:

答案 0 :(得分:0)

您要将函数添加到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(); } );

答案 1 :(得分:0)

知道了!我知道我以前遇到过这个问题,我根本不记得我做了什么来修复它。关键是在我的插件调用结束时使用.get(0),如下所示:

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

然后我可以毫无问题地致电myPluginDiv.publicFunction()