为$ .plugin()用法准备插件而不是$(selector).plugin()

时间:2012-05-07 10:37:00

标签: jquery

简单地:

(function($){
    $.fn.plugin = function()
    {
        // results in error
        // when called like
        // $.plugin();
    }
})(jQuery);

错误是(从Chrome控制台复制):

Uncaught TypeError: Object function ( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        return new jQuery.fn.init( selector, context, rootjQuery );
    } has no method 'plugin'

为了让我的插件在没有元素选择的情况下工作,我必须遵循哪些规则?

3 个答案:

答案 0 :(得分:6)

只需将功能直接分配给$.plugin

(function($){
    $.plugin = function()
    {
        // ...
    }
})(jQuery);

当然this不再引用所选元素,而是引用jQuery本身。

答案 1 :(得分:0)

问题是你已经宣布了一个插件,作为对象$ .fn的一种方法,并尝试以对象jQuery的方法获取对该插件的访问

答案 2 :(得分:0)

保持jQuery的约定,并且更喜欢以这种方式使用它:

$(this).plugin()