私はCoffeeScriptで非常に基本的なことをしようとしています:
...
nextId = $('.optionsTemplate').prev().children().length + 1
# 'alert nextId' gives 4, which is correct
...
newOption = /*selector of new option*/
newOption.attr 'id', 'item_options_' + nextId
newOption.attr 'name', 'item[options]['+ nextId +']'
したがって、「nextId」を呼び出すと(IDと名前を設定する場合)-JSコンソールに「nextIdは関数ではありません」と表示されます
私はいくつかのことを試しました:
# get text instead of integer
nextId.text()
# make a function
getNextId = () ->
$('.optionsTemplate').prev().children().length + 1
同じエラーが発生します。
コンパイルされた出力は次のとおりです。
$('.addOption').on('click', function() {
var contents, newOption, nextId;
nextId = $('.optionsTemplate').prev().children().length + 1;
contents = "<div class='row'>" + $('.optionsTemplate').html() + '</div>';
$(this).before(contents);
newOption = $('.optionsTemplate').prev().children().eq(-1).find('.text_field');
newOption.attr('id', 'item_options_' + nextId);
return newOption.attr('name', 'item[options][' + nextId(+']'));
});
私には大丈夫のようです。