問題はクリック時のハンドラの最初の部分で問題になりました。中括弧内の式は一重引用符で囲む必要がありました。たとえば、次のように
$('#answer_button_0').on 'click', (e) -> App.answer_data.send_data()
しかし、私は$.parseHTML("\'")
を使用して、単一引用符をエスケープしなければならなかったリテラル文字列にそれを回すせずに私の文字列の前面と背面に単一引用符を連結することができるようにします。
だから、何であったか、最終的に私のために働いて、この:は[EDIT:これは解決策ではありませんでしたが判明し、以下を参照してください]
$($.parseHTML("\'" + '#' + answer_text + counter + "\'")).on 'click', (e) -> App.answer_data.send_data()
EDIT: は、イベントリスナーを修正するために管理し、ボタン(感謝@mu!):
answer_text = "answer_button_"
counter = 0
for answer in data.answers
answerHtml.push "<button type='button' id=#{answer_text+counter} >#{answer.title}</button>"
counter = counter+1
私はボタンがあるAppenた後に(コードの後半で別々のループをしなければならなかったイベントリスナーを修正するにはDED)のページへ:
counter = 0
for id in data.answers.map (answer) -> answer.id
console.log "[AC] answer id: #{i.id}" #This prints 4 different ids, like it should!
$('#answer_button_'+counter).on 'click', (e) -> App.answer_data.send_data(id)
counter = counter+1
残念ながら、今のボタンとイベントリスナーは、私は、問題を抱えている仕事ということID私は新しいで作成したイベントリスナーに渡すプロパティループ(send_data(id)
)は常に同じです - 私が押すボタンとは独立しています。/
EDIT 2:
counter = 0
for id in data.answers.map (answer) -> answer.id
do (id) ->
$('#answer_button_'+counter).on 'click', (e) -> App.answer_data.send_data(id)
counter = counter+1
はありがとう:@mu私はインクルードキーワードんし、今では作品を追加示唆したように私は考え、なぜ...を持っていません! :)
本当ですか? '$( '#' + answer_text + counter)'は '$(" ## {answer_text}#{counter} ")'と同じでなければなりません。 '
あなたは正しい@ムです。 '$('#answer_button _ '+ counter).on' click '、(e) - > App.answer_data.send_data() 'が正しい連結方法でした。あなたは他の2つの部分についても正しいです:私はそれを 'answerHtml.push 'に変更しました。"ボタンが実際にページに追加された後にイベントリスナーを設定する2番目のループ。残念ながら今私は別の問題に直面しています - 私は私の質問を更新しました。 – megahra
あなたは 'do'ループが必要です。[このセクションの最後](http://coffeescript.org/#)の[この回答](https://stackoverflow.com/a/18047974/479863)を参照してください。ループ)、[これらの検索結果](https://stackoverflow.com/search?q=user%3A479863+%5Bcoffeescript%5D+CoffeeScript+provides+the)を参照してください。 –