jQuery - 方法链接的插件和命名空间问题

时间:2014-11-16 04:53:51

标签: javascript jquery

我正在尝试创建一个我可以同时调用的简单插件:$.myPlugin()$('something').myPlugin()

下面是代码:

(function($) {
  $.fn.myPlugin = function(item) {
    return this;
  };

  $.myPlugin = function(item) {
    return $.fn.myPlugin(item);
  };
}(jQuery));

当上面提到的任何方式调用时,这都有效。

但是,调用$.myPlugin().hide() 有效。任何链式方法都失败了。

Heres a simple JSBin I made showing the issue

为什么?

1 个答案:

答案 0 :(得分:1)

您应该返回$(this),而不是jquery this

(function($) {
    $.fn.myMethod = function() {
      this.append('<p>MY METHOD</p>');

      return $(this);
    };

    $.myMethod = function() {
      return $.fn.myMethod();
    };
}(jQuery));

$(function () {
    // Moment of truth
    $('.output').myMethod().hide('slow');

    $('h1').click(function(){
      $('.output').myMethod().hide();
    });
});
相关问题