CoffeeScript - lanchester/rails_environment GitHub Wiki

RailsのviewからCoffeeScriptの関数を呼ぶ

CoffeeScriptで関数を定義するとJavascriptへのコンパイル時に(function(){...}).call(this)のような即時間数と呼ばれるローカルな関数を定義します。これは名前空間の汚染を防ぐために有効な方法ですが、このままではviewから参照することができません。

クラスを作ってなるべく名前空間の汚染を防ぎつつviewから参照できるようにします。

# CoffeeScript
class @Myclass
  myfunc: () ->
    alert "hoge"

@myobj = new Myclass()
# view
<%= button_tag "go", onclick: "return myobj.myfunc();" %>

参考

class @Myclass
  _hoge = 1  # privateな変数
  _privateFunction = ->  # privateな関数

タッチスクリーンのtouchendイベントについて

スマホ等タッチ可能なデバイスではclickイベントではなくtouchendを使った方がレスポンスが良いが、win8などタッチ操作とマウス操作両方可能な場合にマウスでの操作ができなくなる。 なのでスマホではtouchendを使い、Windowsではclickを使う。

var onSP = 'ontouchstart' in window && navigator.platform.indexOf("Win") == -1;
var CLICK_EVENT = onSP ? 'touchend' : 'click';

$(document).on(CLICK_EVENT, function(){
  hoge
});