【问题标题】:Problems calling the JQuery function slideUp from CoffeeScript从 CoffeeScript 调用 JQuery 函数 slideUp 的问题
【发布时间】:2011-08-08 21:52:36
【问题描述】:

我正在尝试将以下 JS sn-p 转换为 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);

看起来和我很相似,但它根本不起作用。 sn-p 的目的是在 id 为 #flash 的 div 上做一个 slideUp 动画,并在动画完成后移除元素。纯 JS Snippet 工作正常,但我不明白,为什么编译后的 CS 不起作用

我对 JavaScript 或 CoffeeScript 一点经验都没有,所以我很乐意在这里给点提示。

【问题讨论】:

    标签: jquery coffeescript slideup


    【解决方案1】:

    您的原始代码相当于 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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多