のように「オンザフライ」で要素にイベントを設定する必要がありますがvar X = $('HTML CODE HERE')
、イベントを最後の要素に設定すると、他のすべての要素がこの最後のイベントを取得します。
ここでの例:http://jsfiddle.net/QmxX4/6/
$(document).ready(function() {
var ulItem = $('.lst');
for (var x=0; x<5; x++) {
var newItemElement = $('<li style="border:solid 1px blue;width:200px;height:40px;"></li>');
ulItem.append(newItemElement);
var generator = Math.random();
newItemElement.on('click', function() {
console.log(generator);
});
}
});
すべての要素は異なります。要素にイベントを直接アタッチします。要素にイベントを追加する前後に追加しようとしますが、機能しません。すべての要素が最後のイベントを取得します。
最後のイベントで生成されたgetコードをクリックしても<li></li>
、「理論的には」すべての要素に異なるイベントがアタッチされている場合。
しかし、次のように、アイテムを追加した後に他のループ追加要素を作成すると<ul></ul>
、次のようになります。
$.each($(ulItem).children('li'), function(i, item) {
console.log($(this));
var generator = Math.random();
$(this).on('click', function() {
console.log(generator);
});
});
動作します...問題は何ですか?