4

最初に選択した要素 (すべての要素) を初期化したい jq プラグインを作成しました。コードの後半で、メソッドによって生成された文字列を取得したいと考えています。しかし、返されるのはオブジェクトだけで、文字列ではありません。

私はインターネットで多くの調査を行いましたが、プラグインを一方で「連鎖可能」にし、他方で「任意の値を返す」方法がわかりません。

どう思いますか?

(function($){
    var methods = {
        init: function(val){
            // Actions to initialize ALL selected Elements
        }
        ,
        returner: function(val){
            alert('working with every selected element: '+$(this).width());
            // return anything
            return 'STRING PRODUCED BY THIS FUNCTION!';
        }
    }

    $.fn.myplug = function(method){
        var args = arguments;
        var init = 'init-myplug';
        return this.each(function(){
            var is_init = $(this).data(init);
            if (is_init && methods[method]){
                return methods[method].apply($(this), Array.prototype.slice.call(args, 1));
            } else if (!is_init && (typeof method === 'object' || !method)){
                $(this).data(init, true);
                return methods.init.apply($(this), Array.prototype.slice.call(args, 0));
            }
        });
    };
})(jQuery);

$('.selects_5_elements').myplug(); // init

$('.selects_5_elements').myplug('returner'); // get the string
4

2 に答える 2

0

あなたがする必要がある唯一のことは、それを各コールバックに入れることです:

if ( args.length === 0 ) {
   // Init your plugin
   return this;
}

if ( args[0] === "returner" ) {
   // Generate your string
   return "STRING PRODUCED BY THIS FUNCTION!";
}
于 2013-07-26T12:51:35.070 に答える