Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从CoffeeScript调用JQuery函数slideUp时出现问题_Jquery_Coffeescript_Slideup - Fatal编程技术网

从CoffeeScript调用JQuery函数slideUp时出现问题

从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

我正在尝试将以下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的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())