jQuery 插件 : Making a function on '$'

标签 jquery jquery-plugins prototype

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

真的希望允许用户在不首先实例化 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)

说真的,这不可能是应该的方式。感觉被黑客入侵了;我觉得我一定做错了,就像我应该使用 $ 或其他东西的(对我来说完全神秘的)原型(prototype)。 是这个吗?我已经说对了吗?实现这一目标的最佳方法是什么?我应该这样做吗!?

最佳答案

我没有发现它有什么问题,它并不比分配全局函数更糟糕,例如我使用 window.number_format (我构建了自己的工具包)。由于您希望用户能够调用 $.drollScrollDefaults,因此您应该指定该值。

关于jQuery 插件 : Making a function on '$' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601910/

相关文章:

javascript - 如何阻止图像在达到某个点后缩小?

javascript - 在 Popup 上,通过 ajax 读取数据两次 : php mysql

javascript - 饼图与 jQuery

javascript - 对 jQuery 插件的操作始终是最后的选择?

javascript - js中内置对象类型在控制台中的不同类型名称

javascript - THREE.Camera.prototype.lookAt</<() - </< 是什么意思?

javascript - 在javascript中添加正则表达式来确定url后面是否有任何字符/

javascript - 从字符串中删除字符,忽略 html 标签

jquery-ui - 5 秒后显示 JQuery JDialog 并自动关闭

node.js - Node.js 中的 for..in 是否需要 .hasOwnProperty()?