jQuery的。使用单个$调用自定义函数

时间:2012-02-09 11:38:24

标签: jquery

(function ($) {
    $.fn.test = function () {
        console.log('works');
    };
})(jQuery);

$(document).ready(function () {
    var var1 = $().test(); // works
    var var1 = $.test(); // error: $.test is not a function
});

可以这样调用$.test()吗?

2 个答案:

答案 0 :(得分:3)

您可以轻松扩展jQuery对象本身

(function ($) {
    $.test = function () {
        console.log('works');
    };
})(jQuery);

但请注意,jQuery.fn(等于jQuery.prototype)无法使用此功能,因此您无法通过dom nodes访问此处的this,在其他jQuery插件函数之前或之后,你也不能链接该方法。

$().test()工作的原因是,jQuery构造函数创建了一个链接到jQuery.fn(prototype ..)的新对象。

答案 1 :(得分:2)

我认为这是因为jQuery对象实际上只是init构造函数。意味着$只表示jQuery对象的构造函数。因此,执行$()会创建一个空的jQuery对象,然后您可以从中调用原型方法test()

要访问原型,您可以执行$.fn.test();