これは本当にシンプルで、私は「木の木」という瞬間があるように感じますが、その瞬間は1日以上続いています。 !私はこれをgoogledして、SOの答えの多くを読んで、しかし、私は私の問題を正確に自分の欠点のために疑いの余地はないと私は見た答えを適用している。 jQueryプラグイン変数として関数を受け入れ、パラメータを返す
は、問題を説明するために、私は(私はこれのためにフィドルを作成しようとしましたが、バイオリンで「ページ」にプラグインの外部を含める方法がわからない)このサンプルjQueryプラグインを持っている:(function ($) {
$.fn.test = function (options) {
var settings = $.extend({
onItemClick: function() { },
itemArray: new Array(),
}, options);
for (i = 0; i < settings.itemArray.length; i++) {
var $item = $("<li></li>");
$item.html(settings.itemArray[i].itemLabel);
$item.click(function() {
settings.onItemClick.call(settings.itemArray[i]);
});
this.append($item);
}
return this;
};
}(jQuery));
ご覧のとおり、私は変数onItemClickとして関数を受け入れています。私はこれが存在し、簡潔さのための機能であるというテストを中止しました。
私の例のページには、次のようになります。
<body>
<div>
<ul id="testList"></ul>
</div>
</body>
</html>
<script type="text/javascript">
$(function() {
var testDataArray = new Array();
var itemLabel = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"];
var itemDate = ["2017-01-03", "2015-08-03", "2016-06-21", "2016-12-20", "2013-09-07"];
for (i = 0; i < itemDate.length; i++) {
var testData = {};
testData["itemLabel"] = itemLabel[i];
testData["itemDate"] = itemDate[i];
testDataArray[i] = testData;
};
$("#testList").test({
itemArray: testDataArray,
onItemClick: function (item) {
alert(item.itemLabel + ": " + item.item.Date);
}
});
})
</script>
をので、私は私のページからプラグインを呼び出すときに、私は、パラメータとして関数を渡すと、その関数内の変数を含めることができることができるようにしたいですプラグインによって実際の値が入力されます。その最後のポイントは私が立ち往生しているところです。
私が書いたコードはそのまま動作しません。当然のことながら、それはエラーがスローされます
settings.itemArrayは私がのクリックイベントにアタッチしようとしている機能の範囲内で知られていないため、未定義
のプロパティ「itemDate」を読み取ることができませんアイテム。私は理解している、私はちょうどこれを行う正しい方法が理解できない!
このため – GProst