为什么要使用jQuery.fn添加插件?

时间:2011-06-24 12:32:10

标签: jquery jquery-plugins

所以我认为jQuery.fn是jQuery.prototype的快捷方式。但是jQuery 对象的方法不是插件吗?为什么我要为原型添加方法?不会向原型添加方法将方法赋予使用jQuery对象作为构造函数创建的对象(而不是将方法添加到jQuery对象本身)?

2 个答案:

答案 0 :(得分:9)

它甚至有点复杂(或者至少看起来如此)。看看source code (jQuery 1.6.2)

致电jQuery(selector) you are actually calling

return new jQuery.fn.init( selector, context, rootjQuery );

In addition we have jQuery.fn.init.prototype = jQuery.fn

因此,通过扩展jQuery.fn,我们也会扩展jQuery.fn.init.prototype

我们使用new jQuery.fn.init创建的每个对象(通过调用jQuery())都有一个引用到原型,过去或将来创建的每个对象都可以访问我们分配给jQuery.fn的每个方法。

我希望这可以解决你的困惑。如果没有,请问:)

答案 1 :(得分:-4)

jQuery在Plugins/Authoring上有关于此的文档。

在jQuery插件中添加新插件有两种不同的方法:

(function( $ ){
  $.fn.myPlugin = function() {

    // Do your awesome plugin stuff here

  };
})( jQuery );

(function($))比使用下面的$更安全,因为使用除jQuery.fn.myPlugin = function() { // Do your awesome plugin stuff here }; 之外的其他内容进行覆盖可能导致插件无效。

{{1}}