我是coffeescript / javascript的相对业余爱好者,但我无法弄清楚如何构建它以便三个不同的函数(两个Select2函数和一个函数来加载Best in Place)将在Rails 3应用程序中同时工作。在应用程序运行时,我在资产管道文件中有以下代码,它肯定会被加载并转换为javascript:
jQuery ->
$('#foo').select2()
placeholder: "Choose an option.",
allowClear: true
$('#bar').select2()
placeholder: "Choose an option.",
allowClear: true
$('.best_in_place').best_in_place()
但是当我把这三个函数放在一起时,它们都不起作用。当我只跑一个时,比如:
jQuery ->
$('#foo').select2()
placeholder: "Choose a diagnosis.",
allowClear: true
Presto,这个功能运作得很好。我在这里做错了什么?
答案 0 :(得分:1)
我怀疑您的代码根本不起作用,您可能希望在尝试运行该代码时观看JavaScript控制台。
此:
$('#foo').select2()
placeholder: "Choose an option.",
allowClear: true
与此JavaScript相同:
$('#foo').select2()({
placeholder: "Choose an option.",
allowClear: true
});
但你几乎肯定想要这个JavaScript:
$('#foo').select2({
placeholder: "Choose an option.",
allowClear: true
});
为此,你的CoffeeScript看起来像这样:
$('#foo').select2
placeholder: "Choose an option."
allowClear: true
或者像这样:
$('#foo').select2(
placeholder: "Choose an option."
allowClear: true
)
这个CoffeeScript:
$('#foo').select2()
placeholder: "Choose an option.",
allowClear: true
$('#bar').select2()
placeholder: "Choose an option.",
allowClear: true
$('.best_in_place').best_in_place()
应该成功执行$('#foo').select2()
,然后触发TypeError,因为select2()
没有返回一个函数,但你试图像一个函数那样调用它。然后,$('#bar').select2()
和$('.best_in_place').best_in_place()
甚至不会运行。