微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery插件:在’$’上创建一个函数

我做了一个小滚动条jQuery插件.它有一个非常标准的实现:$(selector).drollScroll({options});,带有认值.诀窍是我希望用户能够提前设置这些认值,这样对于较大的站点(我正在为更大的站点开发这个),未来的用户可以轻松获得相同的滚动条而不必每次都指定参数.

我真的希望允许用户在没有首先实例化jQuery对象的情况下执行此操作,所以通过$.drollScrollDefaults({options})之类的东西.

到目前为止我有这个:

(精简到只有您阅读乐趣的必需品)

(function($)
{
    var defaults = {
        content                :   ".drollScrollBowl",scrollBoxClassName     :   "drollScrollShoal",scrollbarClassName     :   "drollScrollPole",thumbClassName         :   "drollScrollTrollThumb",scrollbarOpacity       :   1,scrollbarFadeTime      :   300,scrollbarTimetoLive    :   1000,alwaysVisible          :   true,autoFade               :   false,overrideBoxStyling     :   false,overrideBarStyling     :   false,overrideThumbStyling   :   false,scrollWidthConstant    :   false
    };

    $.drollScrollDefaults = function(options)
    {
        $.extend(defaults,options);
    };

    $.fn.drollScroll = function(options)
    {
        var opts;

        return this.each(function()
        {
            // we want opts to be its own object in case someone edits it later
            opts = $.extend({},defaults,options);

            $(this).data("drollScroll",{options : opts});
        });
    };
})(jQuery);

在这实际上有效,但这一行

$.drollScrollDefaults = function(options)

严重的不可能是它应该如何完成.它感觉被黑了;我觉得我一定是做错了,就像我应该使用(对我来说完全是神秘的)原型$或者其他东西.是这个吗?我是对的吗?实现这一目标的最佳方法是什么?我应该这样做吗??

解决方法

我没有看到它有什么问题,它并不比分配全局函数更糟糕,比如我使用window.number_format(我构建自己的工具包).由于您希望用户能够调用$.drollScrollDefaults,那么您应该分配给它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐