これはすべて構文の問題に帰着すると思います。addItem() 関数で li アイテムの id 属性を正しく設定する方法がわかりません。
addItem() 関数 (クリック関数で定義されている) の "ths" 引数を削除すると、動的に作成されたリスト項目に対して id 属性が正しく設定されます。引数を渡すと、関数は正常に起動しますが、リスト アイテムの ID は設定されません。ID のないリスト アイテムを作成するだけです。
以下の形式にとどまりながら、関数に引数を渡すときに、動的に作成されたリスト項目の ID を適切に設定するにはどうすればよいですか?
私はこのようなことができます:
$('<li>'+ths+'</li>').attr('id', 'foo'+i).attr('class', 'bar'); i++;
しかし、それは私が以下に持っているモデルの構文に従っていません。また、あまり効率的ではありません。
(function () {
var i = 1;
var addContainer = {
init: function () {
$('<li></li>', {
id: "today"
}).prependTo('#myDiv');
},
addItem: function (ths) {
$('<li>' + ths + '</li>', {
id: 'newItem' + i
}).prependTo('#orderList');
i++
}
};
$('body').on('click', '.itemRow', function () {
var ths = $(this).children('.itemTitle').text();
if ($('today').length >= 0) {
addTodaysOrders.addOrder(ths);
}
});
})();
このコードは、要点を理解するための簡単な概要です...いくつかの部分が欠けています。ただし、ここで重要な部分は、この形式内で id を設定する構文です。