私はこれを理解したり、オンラインで解決策を見つけたりすることはできません。 jQueryベースのJavaScriptからCoffeeScriptでスクリプトを作成する方法を理解しようとしています。
スクリプトは次のとおりです。
jQuery('.post-thumb a').hover( function() {
jQuery(this).find('.overlay').fadeIn(150);
}, function() {
jQuery(this).find('.overlay').fadeOut(150);
});
私は最初、次のように書き直してみました。
thumb_overlay =>
$('.post-thumb a').hover
=> $(this).find('.overlay').fadeIn(150)
,=> $(this).find('.overlay').fadeOut(150)
でもうまくいかなかったので、ここに投稿しようと思いました。では、CoffeeScriptでそのJavaScriptを作成するにはどうすればよいですか?
あなたはもうすぐそこにいると思いますが、CoffeeScriptが改行を誤解しないように、いくつかの括弧(物事をグループ化するため)といくつかのバックスラッシュが必要です。これを試して:
thumb_overlay =>
$('.post-thumb a').hover \
(=> $(this).find('.overlay').fadeIn(150)), \
(=> $(this).find('.overlay').fadeOut(150))
すべてを1行にマッシュアップすることもできますが、数か月後に後悔する可能性があります。
thumb_overlay =>
$('.post-thumb a').hover (=> $(this).find('.overlay').fadeIn(150)), (=> $(this).find('.overlay').fadeOut(150))
そしてところで、 homepage に移動し、「Try CoffeeScript」をクリックします。これは、CoffeeScriptの小さなビットを簡単に分類する方法です。 ->
バージョンから始めてJavaScriptのノイズを減らし、適切なJavaScriptを取得したら=>
に切り替えます。
この場合、=>
フォーム、つまり->
フォームフォームを使用するかどうかはわかりません。
$('.post-thumb a').hover \
(-> $(this).find('.overlay').fadeIn(150)), \
(-> $(this).find('.overlay').fadeOut(150))
あなたが始めたJavaScriptをあなたに与えるでしょう:
$('.post-thumb a').hover((function() {
return $(this).find('.overlay').fadeIn(150);
}), (function() {
return $(this).find('.overlay').fadeOut(150);
}));
また、円記号が気に入らない場合は、次のようにすることができます。
$('.post-thumb a').hover(
-> $(this).find('.overlay').fadeIn(150)
-> $(this).find('.overlay').fadeOut(150)
)
または、関数が長い場合は、関数に名前を付けて、多くの問題をスキップできます。
fadeIn = -> $(this).find('.overlay').fadeIn(150)
fadeOut = -> $(this).find('.overlay').fadeOut(150)
$('.post-thumb a').hover(fadeIn, fadeOut)
私はJavaScriptとCoffeeScriptの両方でこのアプローチを好む傾向があり、私には読みやすくなっています。
2014 CoffeeScriptで答えを探している人のために、
$('someSelector').hover ->
alert "hello"
, ->
alert "world"
にコンパイルされます
$('someSelector').hover(function() {
return alert("hello");
}, function() {
return alert("world");
});