jQuery扩展$ .fn并调用方法语法

时间:2011-01-10 14:33:33

标签: jquery

我了解您在扩展$.fn时会调用这样的方法。

$ == jQuery

//$("div").myMethod();

$.fn.extend({
   myMethod: function(){...}
});

当你扩展jQuery对象时就像这样:

//$.myMethod2();

$.extend({
    myMethod2: function(){...}
});

但我不太明白$()在这里做了什么:

//这里有一些方法被调用。一些具有相同方法名称(启动)的是坏的。

//但也许这就是为什么需要空白的jQuery对象,因此方法名称不会发生冲突

$(function() {

    $().functionName({
      something: 'something'
    }).myMethod();

    $().func1({
      x: 1
    }).initiate();

    $().func2({
      y: 2
    }).initiate();

});

是否与调用该方法的事实有关,包括函数名称?

提前致谢并希望这是有道理的。

2 个答案:

答案 0 :(得分:3)

$()创建一个空的jQuery对象(wrappet set)。我不知道为什么有人会这样做。基本上,你在一组空元素上调用functionNamemyMethod =什么都不应该发生。

jQuery().css({
   'foo': 'bar'
}).show();

答案 1 :(得分:1)

在jQuery 1.4之前调用jQuery()jQuery(document)相同。从那时起,它被改为返回一个空集。因此,自jQuery 1.4起,jQuery()相当于jQuery([])。即便如此,后者是并且是推荐的方式来获得空集以确保不要混淆任何人。

无论如何,我的猜测是你要问的代码是旧的,并且使用了一种不赞成使用的方式来访问document节点,更不用说这样做是不好的做法。然后。 $()可能应为$$(document)

但是,这并不是说空的jQuery集是错误的或无用的。 Adam Kiss写了一篇关于空集有用性的post on his blog

最后,还有其他一些扩展jQuery的方法:

(function($){
    $.myMethod = function() {
    };

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