Javascript jQuery使用Rails/Coffeescript绑定事件?
因此,在app/assets/javascript/faye.js.coffee.erb中,我有以下内容:Javascript jQuery使用Rails/Coffeescript绑定事件?,javascript,ruby-on-rails,coffeescript,Javascript,Ruby On Rails,Coffeescript,因此,在app/assets/javascript/faye.js.coffee.erb中,我有以下内容: $('#room_tag').bind('blur', () -> alert('Hey!') ) 其中的所有其他代码,例如:sendmessage('room','message')都可以正常工作。我可以复制并粘贴上面代码块生成的代码,然后粘贴到Chrome中,效果很好。我认为这是因为,它是rails还是coffeescript?它们中的任何一个都将整个文件包装到: (fu
$('#room_tag').bind('blur', () ->
alert('Hey!')
)
其中的所有其他代码,例如:sendmessage('room','message')
都可以正常工作。我可以复制并粘贴上面代码块生成的代码,然后粘贴到Chrome中,效果很好。我认为这是因为,它是rails还是coffeescript?它们中的任何一个都将整个文件包装到:
(function() {
// your generated code here
}).call(this);
还有,是否有一种方法可以让我访问其中定义的方法?是否可以在其中定义方法而不将其分配给变量?1)很可能是您的.bind
调用在文档准备就绪之前执行得太快,因此它没有做任何事情。在调用$(document)时将其包装起来。像这样准备好了吗
$(document).ready ->
$('#room_tag').bind 'blur', ->
alert 'Hey!'
实际上有一个可爱的快捷方式,因为jQuery的默认$
函数是$(文档)的别名。准备好了
,您只需执行以下操作:
$ ->
$('#room_tag').bind 'blur', ->
alert 'Hey!'
2) 正是coffeescript将所有内容封装在一个自执行函数定义中
3) 如果要在coffeescript中生成全局函数,请将其显式指定为全局窗口对象的属性
window.myFunc = (arg1) ->
alert arg1
2) &3)在中有清楚的解释,我不知道,我只是看到了这个,然后。。。想要一些咖啡…这个问题的第二部分基本上是重复的,请看我的答案,解释包装的用途。(虽然在本例中,包装器并没有引起问题,正如Peter在回答中所说。)从CoffeeScript应用的CoffeeScript文档中,通常的警告是:内联脚本将在闭包包装器中运行,因此如果您想公开全局变量或函数,请将它们附加到窗口对象。
确切地说,听起来这里的答案是#1。您可以通过选中$(“#房间标签”).length来确认这一点。如果是1
,则该元素在选择时存在;如果是0
,则不是。