【问题标题】:Three jquery coffeescript functions conflicting with one another三个 jquery coffeescript 函数相互冲突
【发布时间】:2012-09-15 09:18:57
【问题描述】:

我是 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,该功能运行良好。我在这里做错了什么?

【问题讨论】:

  • 这可能只是一个复制/粘贴错误,但看起来你的缩进在 jQuery 之后是错误的 ->

标签: jquery ruby-on-rails-3 coffeescript asset-pipeline


【解决方案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() 甚至不会运行。

【讨论】:

  • 谢谢!这也解决了让我发疯的占位符问题。
  • @Michael:我倾向于在我的 CoffeeScript 函数调用(尤其是多行函数调用)中使用括号来避免这样的问题。
猜你喜欢
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
相关资源
最近更新 更多