3

简单地:

(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'

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

4

3 回答 3

6

只需将函数直接分配给$.plugin

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

当然this不会再引用选定的元素,而是引用jQuery自身。

于 2012-05-07T10:47:58.597 回答
0

问题是您已经宣布了一个插件,作为对象 $.fn 的方法,并试图以对象 jQuery 的方法访问插件

于 2012-07-12T09:52:52.427 回答
0

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

$(this).plugin()
于 2012-10-27T15:40:47.237 回答