2011-08-08 8 views
0

からjQueryの機能slideUpを呼び出す:問題私はCoffeeScriptのに次の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でslideUpアニメーションを実行し、アニメーションが完了したときに要素を削除することです。純粋なJSスニペットはうまく動作しますが、コンパイルされたCSがその仕事をしない理由はありません

JavaScriptやCoffeeScriptはあまり経験がありません。

答えて

3

あなたの元のコードは、代わりに、あなたが1000slideUp関数の3番目の引数作ったのCoffeeScript

$(document).ready -> 
    window.setTimeout (-> 
    $('#flash').slideUp 'slow', (-> $(this).remove()) 
), 1000 

に相当します。 setTimeoutには時間引数が必要なため、何も起こりません。私は読みやすさのために二つの引数を交換setTimeoutのラッパー関数を作るのが好き

注:それが定義されていたら

window.delay = (ms, func) -> setTimeout func, ms 

は、あなたが

$(document).ready -> 
    delay 1000, -> $('#flash').slideUp 'slow', (-> $(this).remove()) 
+0

Uuuuhを書くことができますが、これは非常にダムでした私の。 Thxたくさんの男! – NilsHaldenwang

関連する問題