4

小さなスクロールバー 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)

真剣にそれが行われるはずの方法ではありません。ハッキングされたように感じます。$ または何かの(私には完全に神秘的な)プロトタイプを使用する必要があるように、私はそれを間違っているに違いないと感じています。 これでしょうか?私はもう正しいですか?これを達成するための最良の方法何ですか? こんなことしていいの!?

4

2 に答える 2

4

私の使用のようにグローバル関数を割り当てるよりも悪くはありませんwindow.number_format(私は独自のツールキットを構築しています)。ユーザーが を呼び出せるようにしたいので$.drollScrollDefaults、それを割り当てる必要があります。

于 2013-07-11T19:38:28.213 に答える
1

通常、関数で定義します。たとえば、

$.fn.myplugin = function() { ... your plugin here ... };
$.fn.myplugin.defaults = { ... defaults here ...};

$.myplugin主に、私のプラグインのほとんどは asとの両方で呼び出すことができるためです。$().myplugin()

プラグイン内および外部でアクセスします$.fn.myplugin.defaults

于 2013-07-11T19:39:16.870 に答える