1

私は最初のjQueryオブジェクトの1つを開発しようとしています:

jQuery(function ($) {
    var WNM = function (element) {
        var elem = $(element);
        var obj = this;

        var MultipleValues = function (element) {
            var elem = $(element);
            var obj = this;
            var opt; // Options;
            var sep; // Seperator string;
            var vals; // Array wich holds the values;

            //$(obj).find(".multipleValuesSett_MaxItems").val();

            this.MultipleValues = function (options) {
                opt = options;
                sep = $(obj).find(".multipleValuesSett_Seperator").val();

                loadValues();

                outputValues();
            };

            var loadValues = function () {
                var values = $(obj).find(".multipleValues_Values").val();
                vals = values.split(sep);
            };

            var outputValues = function () {
                var temp;
                if ($.isFunction(opt.output)) {
                    temp = opt.output.apply(this, vals);
                    $(obj).find(".multipleValues_ValuesOutput")
                        .append(temp);
                }
            };
        };

        this.MultipleValues = function (options) {
            if (elem.length) {
                var mv = new MultipleValues(elem);
                mv.MultipleValues(options);
                return mv;
            }
            else
                return null;
        };

    };

    $.fn.MultipleValues = function () {
        return wnm = new WNM(this);
    };

});

今、私がこれを実行しようとするときはいつでも:

$(document).ready(function () {
    $(".multipleValues").WNMedia().MultipleValues({
        output: function (data) {
            var temp = "";
            temp += "<ul>";
            $.each(data, function (i) {
                temp += "<li>" + data[i] + "</li>";
            });
            temp += "<ul>";

            return temp;
        }
    });
});

次のエラーが発生します:(TypeError:$( "。multipleValues")。WNMedia()は関数ではありません)。誰かがここで私を助けてくれませんか、私はちょっと立ち往生しています。

=========================================

今、私は別の問題を抱えています。定義された出力関数で、オプション出力関数を呼び出すことがわかります。文字列の配列であるparamvalsが渡されます。データ変数をループするときは常に、アイテムは1つしか含まれていませんが、実際には3つあります。何かアイデアはありますか?

問題を解決し、変更しました:

temp = opt.output.apply(null, vals);

の中へ:

temp = opt.output.apply(null, [vals]);
4

1 に答える 1

0

WNMedia()を定義したことがない場合、サンプルは次のように機能します

$(".multipleValues").MultipleValues({
        output: function (data) {
            var temp = "";
            temp += "<ul>";
            $.each(data, function (i) {
                temp += "<li>" + data[i] + "</li>";
            });
            temp += "<ul>";

            return temp;
        }
    });
​
于 2012-11-04T01:27:58.660 に答える