1. ホーム
  2. jquery

jQueryのイベントで'this'の値を制御する

2023-12-17 08:46:20

質問

jQueryを使って「コントロール」を作成し、jQuery.extendを使って、できるだけOOになるようにアシストしています。

コントロールの初期化中に、以下のように様々なクリックイベントを配線しています。

jQuery('#available input', 
            this.controlDiv).bind('click', this, this.availableCategoryClick);

bindメソッドのdata引数に'this'を指定していることに注意してください。これは、クリックイベントを発生させた要素からではなく、コントロールインスタンスにアタッチされたデータを取得できるようにするためです。

これは完全に動作しますが、もっと良い方法があると思います。

過去にPrototypeを使っていたとき、イベントの中で'this'の値を制御できるバインド構文があったのを覚えています。

jQueryのやり方はどうなんでしょうか?

どのように解決するのですか?

あなたは jQuery.proxy() を無名関数で使うことができます。ただ、'context' が2番目のパラメータであることが少し厄介です。

 $("#button").click($.proxy(function () {
     //use original 'this'
 },this));