0

これが例です。これは、http: //docs.jquery.com/Plugins/Authoringのドキュメントに従って作成された単純な関数です。

(function ($) {
    var methods = {
        init: function (options) {
            // Gets called when no arg provided to myFunction()
        },
        doTask1: function () {
            // Do task #1
        },
        doTask2: function () {
            // Do task #2
        }
    };

    function HelperMethod(item) {
        // some handy things that may be used by one or more of the above functions
    }

    // This bit comes straight from the docs at http://docs.jquery.com/Plugins/Authoring
    $.fn.myFunction = function (method) {
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method == "object" || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error("Method " + method + " does not exist on jQuery.dcms");
            return null;
        }
    };
})(jQuery);

次のように関数を呼び出すことができます: $('body').myFunction();、または$('body').myFunction("doTask1");

$('body').myFunction("changePref", "myPrefs");、またはおそらくのようなメソッドを呼び出して、たとえばユーザーの設定を変更するための慣用的および/または便利な方法はあり$('body').myFunction("{changePref: myPrefs}");ますか?

それとも、設定を引数として取るだけのユーザー設定のためだけに別の関数を作成したほうがよいでしょうか?

4

1 に答える 1

1

結局のところ、私initは任意の数のオプションを処理できます。さらに、別の関数を作成することは、名前空間が乱雑になるため、悪い習慣と見なされます。http://docs.jquery.com/Plugins/Authoringを参照してください いくつかの優れたドキュメントについては、見出し Namespacing の下にあります。

そのため、ここに少しコメントを付けたスニペットがあります。

(function ($) {
    var methods = {
        init: function (options) {
            // Gets called when no arg provided to myFunction()
            // Also attempts to make use of whatever options provided if they
            // don't match the options below.
        },
        doTask1: function () {
            // Do task #1
        },
        doTask2: function () {
            // Do task #2
        }
    };
//...

myFunction()関数内でそれらを処理している場合、必要な引数を渡すことができるはずです。

于 2013-01-25T17:59:19.927 に答える