jQuery用对象扩展$ .fn?

时间:2014-10-09 11:56:02

标签: javascript jquery object

使用此Difference between jQuery.extend and jQuery.fn.extend?有没有办法让$('.selector').Group.Method();$('.selector').Group.Method2();

现在我在主脚本中有一个

function Forty() {};

var Forty = new Forty();

(function(site) {
    $.extend(Forty, {
        getBaseUrl: function(extra) {
            extra = typeof extra !== 'undefined' ? extra : '';
            return Forty.get('baseUrl') + extra;
        },
        get: function($what) {
            return site[$what];
        }
    });
})(site);

然后在该文件中我有:

$.extend(Forty, {
    flyOut: function() {
        $(this).on('click', function() {
            $('html').toggleClass('nav-open');
        });
    }
});

最后我有:

$.fn.extend({Forty: Forty});

在我有这条线之前:

$('.selector').Forty.flyOut();

所以我真的喜欢$('.selector').Forty.flyOut();

之类的东西

这样的事情可能吗?

1 个答案:

答案 0 :(得分:0)

我设法通过以下方式解决了这个问题:

var Forty = {fn:{}};

$.fn.extend({Forty: function() {return $.extend(this, Forty.fn);}});

然后分配我自己的函数:

Forty.fn.flyOut = function() {
    $(this).on('click', function() {
        $('html').toggleClass('nav-open');
    });

    return this;
}

并使用它们:

$('.js-toggle-nav').Forty().flyOut();

这似乎是史诗般的工作!