私のWebページには、動的に自分のページに追加されるdiv要素があります。
そのdivには、クリックするとajaxを使って自分のサーバーからデータを取得するリンクがあります。
<div class="main-div">
<a href="#" class="pull-data"><b>Click Here</b></a>
</div>
私がページ上のjQueryでon clickイベントを持っていれば、それはうまく機能します:
$("a.pull-data").on("click", function(e) {
console.log("Clicked!");
}
しかし、これをcoffeescriptに変換しようとすると、そのようにはなりません。
jQuery ->
$("a.pull-data").on "click", ->
console.log "Clicked?"
私のコーヒースクリプトに欠けているものはありますか?動的に追加された要素のクリックをキャプチャするようにコーヒースクリプトを修正するにはどうすればよいですか。
回答:
回答№1は02つのコード例は同等ではありません。
$("a.pull-data") // create a jquery object matching the CSS selector
.on("click", function(e) { // add a click handler that
console.log("Clicked!"); // logs "Clicked!" to the console
});
そして、これがあなたのコーヒースクリプトの翻訳版です。
jQuery(function() { // pass anon fn to jQuery constructor
return $("a.pull-data").on("click", function() { // returning a fn that
return console.log("Clicked?"); // attaches the click handler
});
});
これは、あなたが望むすべてのことを行う無名関数を作成し、それをjQueryコンストラクターに渡すことです。つまり、実際には呼び出されないため、何もしません。
いつもいつも、 常に 問題があるときはいつでもあなたの出力JavaScriptを見てください。対話型コンパイラを使うこともできます。 coffeescript.org 出力を見ながら関数を構築するため。