便宜上、私のコードのインタラクティブな jsfiddle バージョンを次に示します。 問題のあるコードは次のとおりです。
for i in [1, 2, 3, 4, 5, 6, 7, 8]
console.log "cell #{i} was created!"
cell = $('<div class="inventory-cell"></div>').mousedown (event) ->
alert "#{i} was clicked!"
$("#inventory-grid").append(cell)
そして、これがhtmlです:
<div id="inventory-dialog" class="dialog">
<div id="inventory-grid"></div>
</div>
これがどのように機能するかです。これにより、ループ内に一連のセルが生成されます。最初のものをクリックすると、「1 がクリックされました!」というアラートが表示されます。最後をクリックすると、「8 がクリックされました!」と表示されます。しかし、何らかの理由で、クリックするたびに「8がクリックされました」と表示されます。なぜこうなった?