RubyRoguesポッドキャストの誰かがかつて「CoffeeScriptはあなたよりも優れたJavaScriptを書くので、CoffeeScriptを学ぶ」と言っていました。申し訳ありませんが、誰が言ったか思い出せません...
だから、私は非常に単純なWORKINGjavascript関数を取りました:
togglingii.js
function pdtogglejs(id) { $('div .partybackground').removeClass("hidden"); }
これはこの行によって呼び出されています:
<a href="#" class="dctoggle" onclick="pdtogglejs('partybackground')">Read More...</a>
それから私はそれをこのコーヒースクリプトに変換しました: toggling.js.coffee
pdtogglecs(id) ->
jQuery('div .partybackground').removeClass("hidden")
そして、pdtoggle * j * sではなくpdtoggle* c *sを参照するようにhtmlを変更しました。
私のapplication.jsファイルでは、両方とも問題なく表示されます。
(function() {
pdtogglecs(id)(function() {
return jQuery('div .partybackground').removeClass("hidden");
});
}).call(this);
function pdtogglejs(id) { $('div .partybackground').removeClass("hidden"); }
;
(function() {
}).call(this);
ただし、機能するのは純粋なJavaScriptのみです。Coffeescriptは常にUncaughtReferenceErrorを返します:pdtogglecsは定義されていません。
他のstackoverflowの質問に基づくと、それはある種の名前空間エラーであるに違いありません。おそらく、pdtogglecs自体が関数内にあるためか?ただし、window.pdtogglecs、this.pdtogglecs、root.pdtogglecsを使用してcoffeescript関数を定義しようとしましたが、coffescriptは常にそのエラーで失敗します。
何が足りないの?
ありがとう!!