2009-03-03
jQueryでprototype.jsのbindみたいなの
jQueryでスコープを維持したままイベントリスナーを実行するのってどうすればいいんだろと思ってたんですが、bind()ってのがあるんですね。
var Sample = function() { this.initialize.apply(this, arguments); } Sample.prototype = { initialize: function() { this.message = "Hello world."; $("#foo").bind("click", {obj: this}, this.show); }, show: function(event) { var self = event.data.obj; $("#bar").html(self.message); } } $(function() { new Sample(); });
bind()の第二引数にオブジェクトで指定することができて、イベントリスナー側で受け取れます。
なので、thisを指定して受け取ればスコープ内のデータを使うことができます。
これに早く気づいていれば!
こんなの作っていちいち「$("#foo").click(applyFunc(this, this.show));」とかやってた。
var applyFunc = function(fn, context) { return function() { fn.apply(context, arguments); } }
ドキュメントよーく見ないとダメですね。。。
トラックバック - http://d.hatena.ne.jp/cheesepie/20090303/1236052133
リンク元
- 72 http://d.hatena.ne.jp/ginpei/20100124/rich_sortable
- 29 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1331288081418&ved=0CCwQFjAA&url=http://d.hatena.ne.jp/cheesepie/20090303/1236074793&ei=EthZT6_yC-OJmQXlzpyWDw&usg=AFQjCNH-Iu0VhBFvDDoSphaEmmp4h8S-5Q
- 19 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDUQFjAB&url=http://d.hatena.ne.jp/cheesepie/20090303/1236074793&ei=YARMT9ezKef2mAWK1fjjDw&usg=AFQjCNH-Iu0VhBFvDDoSphaEmmp4h8S-5Q&sig2=vaEgY-wh32jeaUWsFbmg6w
- 18 http://d.hatena.ne.jp/amachang/20070202/1170386546
- 15 http://www.google.co.jp/url?sa=t&rct=j&q=jquery ui sortable helper clone&source=web&cd=6&ved=0CFMQFjAF&url=http://d.hatena.ne.jp/cheesepie/20090303/1236074793&ei=Fp_MTvqEK8_jmAXqhKCgDQ&usg=AFQjCNH-Iu0VhBFvDDoSphaEmmp4h8S-5Q
- 13 http://www.google.co.jp/url?sa=t&rct=j&q=sortable placeholder&source=web&cd=2&ved=0CCoQFjAB&url=http://d.hatena.ne.jp/cheesepie/20090303/1236074793&ei=IuTATsTQIYOCmQXWh-mrBA&usg=AFQjCNH-Iu0VhBFvDDoSphaEmmp4h8S-5Q&sig2=NLbdEBYXwSz37T9Tqh0AEw&
- 12 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http://d.hatena.ne.jp/cheesepie/20090303/1236052133&rct=j&q=bind prototype jquery&ei=6aYSTpepHOuHmQWS_cCbBA&usg=AFQjCNFZZpTKoL5-qYwDs1unFLH_MvMUcg&sig2=nevkUmMPu7-ia6oH8kON
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=jquery+ui+sortable+table&source=web&cd=5&ved=0CEcQFjAE&url=http://d.hatena.ne.jp/cheesepie/20090303/1236074793&ei=qaTlTuOyDKvSmAXRsdSDBQ&usg=AFQjCNH-Iu0VhBFvDDoSphaEmmp4h8S-5Q&sig2=nU97RATtN-396NCRS8hie
- 11 http://www.google.co.jp/url?sa=t&rct=j&q=macvim バックスラッシュ&source=web&cd=6&ved=0CEYQFjAF&url=http://d.hatena.ne.jp/cheesepie/20090303/1236074883&ei=IR3RToHiE-HImQWntv20DQ&usg=AFQj
- 11 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/cheesepie/20090303/1236052133&rct=j&q=prototype bind jquery&ei=8wJBTqzuEYOzrAfhnpy_Bw&usg=AFQjCNFZZpTKoL5-qYwDs1unFLH_MvMUcg&sig2=x-8YOuh_0my0_kKllsd6
