2016-11-21 92 views
7

我使用Gem Coocon作为嵌套窗体。在coffescript中声明全局变量

如果选中.checkBoxCurrentJob,我需要隐藏#end_date_job_portfolio字段。问题是,如果用户没有点击添加新的嵌套表格,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

+1

更加仔细阅读错误消息。看起来你已经输入了'\ u0441'(这是一个“西里尔字母小写字母”),你的意思是键入'c'。 '\ u0441'看起来像一个'c',但它不是一个。 –

+2

@ muistooshort你是对的,错误的是 - >'сheckbox_date.on'点击',',错误的'c'在那里('\ u0441') – Hydro

回答

5

的问题是,你可能指的是\u{441}heckbox_date(不同的标识符),而不是checkbox_date(由@muistooshort评论虽然)这行:

сheckbox_date.on 'click', -> 
^

с应该是ASCII之一。 (c\u0063)。

此外,从ECMAScript语言(基于JavaScript的)规范中,他们推荐在语言源代码中应用Unicode规范化表单C(对于每个实现),我相信解决此问题的方法但是从来没有做过任何事情),但是可以选择。

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