我正在尝试将以下JS片段转换为CoffeeScript:
$(document).ready(function(){
window.setTimeout(function(){
$('#flash').slideUp('slow', function(){
$(this).remove();
})
}, 1000)
})
我试过了:
$(document).ready ->
window.setTimeout ->
$('#flash').slideUp 'slow', (-> $(this).remove()), 1000
会生成以下JS代码:
(function() {
$(document).ready(function() {
return window.setTimeout(function() {
return $('#flash').slideUp('slow', (function() {
return $(this).remove();
}), 1000);
});
});
}).call(this);
对我来说看起来很相似,但它根本不起作用。该代码片段的目的是在id为#flash的div上执行一个滑升动画,并在动画完成后删除该元素。纯JS片段工作得很好,但我不得到,为什么编译的CS不做它的工作
我对JavaScript或CoffeeScript都不是很有经验,所以我很乐意在这里得到一个提示。
您的原始代码相当于CoffeeScript
$(document).ready ->
window.setTimeout (->
$('#flash').slideUp 'slow', (-> $(this).remove())
), 1000
相反,您将1000
作为slideUp
函数的第三个参数。因为setTimeout
需要一个时间参数,所以什么也没发生。
请注意,我喜欢在setTimeout
周围创建一个包装器函数,为了可读性起见,它交换了两个参数:
window.delay = (ms, func) -> setTimeout func, ms
一旦定义了,就可以写
$(document).ready ->
delay 1000, -> $('#flash').slideUp 'slow', (-> $(this).remove())