私は最初の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]);