在coffescript中声明全局变量

时间:2016-11-21 16:36:02

标签: javascript ruby-on-rails coffeescript

我使用Gem Coocon作为嵌套表格。

如果选中#end_date_job_portfolio,我需要隐藏.checkBoxCurrentJob字段。问题是如果用户没有点击添加新的嵌套表单,jQuery就看不到标签,因为这些标签还没有在document中。

为此我使用cocoon:after-insert。这是我的剧本:

$(document).ready -> 
  checkbox_date = ""
  end_date = ""
  $('.experiences').on 'cocoon:after-insert', ->
    checkbox_date = $(".checkBoxCurrentJob")
    end_date = $('#end_date_job_portfolio') 
    console.log(checkbox_date)



  #show it when the checkbox is clicked
  сheckbox_date.on 'click', ->
    console.log("la la la")
    if checkbox_date.prop('checked')
      checkbox_date.hide()
    else
      checkbox_date.fadeIn()
    return 

显示ReferenceError: \u0441heckbox_date is not defined错误。如何将checkbox_dateend_date值从cocoon:after-insert传递到点击事件checkbox_date

2 个答案:

答案 0 :(得分:5)

问题在于,您可能会在此行引用\u{441}heckbox_date(不同的标识符)而不是checkbox_date(由@muistooshort评论):

  сheckbox_date.on 'click', ->
  ^

с应为ASCII码。 c\u{63}\u0063)。

此外,从ECMAScript语言(JavaScript所基于的)规范,他们建议将Unicode规范化表格C应用于语言源代码(对于每个实现),我相信解决这个问题(我从不关心)但从来没有对此做过任何事情,但无论如何都是可选的。

答案 1 :(得分:1)

jquery支持进出的内容:

$(document).ready ->     
  #show it when the checkbox is clicked
  $(document).on 'click', ".checkBoxCurrentJob", ->
    console.log("la la la")
    checkbox_date = $(this)
    if checkbox_date.prop('checked')
      checkbox_date.hide()
    else
      checkbox_date.fadeIn()
    return