从CoffeeScript调用JQuery函数slideUp时出现问题
我正在尝试将以下JS代码段转换为CoffeeScript:从CoffeeScript调用JQuery函数slideUp时出现问题,jquery,coffeescript,slideup,Jquery,Coffeescript,Slideup,我正在尝试将以下JS代码段转换为CoffeeScript: $(document).ready(function(){ window.setTimeout(function(){ $('#flash').slideUp('slow', function(){ $(this).remove(); }) }, 1000) }) 我试过这个: $(document).ready -> window.setTimeout -> $('#fla
$(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的a div上执行slideUp动画,并在动画完成时删除元素。纯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())
您的原始代码相当于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())