1

我正在尝试开发我的第一个 jQuery 对象:

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() is not a function)。有人可以在这里帮我吗,我有点卡住了..

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

现在我有另一个问题。你可以看到在定义的输出函数中,我调用了选项输出函数。传递了一个参数 vals,它是一个字符串数组。每当我遍历数据变量时,它只包含一项,而实际上有三项。有什么想法吗?

解决了问题,改了:

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 回答