2011-08-08 39 views
0
JQuery的功能效果基本show

我嘗試轉換下面JS代碼段的CoffeeScript:問題從調用的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上執行一個slideUp動畫,並在動畫完成時移除該元素。純粹的JS代碼片段工作正常,但我沒有得到,爲什麼編譯的CS沒有做它的工作

我對JavaScript或CoffeeScript根本不是很熟悉,所以我會很高興在這裏提示。

回答

3

你原來的代碼就相當於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()) 
+0

Uuuuh,這是非常愚蠢的我的。 Thx很多人! – NilsHaldenwang