2017-03-11 2 views
0

を使用してハンドラとしてコンストラクタ関数法を取り付け、私はこれがあります。だから、jQueryの

function foo(){ 

    var that = this; 

    this.elements = [ 
    $bar = $('.bar'), 
    $foo = $('.foo') 
    ]; 

    this.example = function(){ 
    alert("a"); 
    } 

    this.elements.$bar.on('click', that.example); 
} 

をし、私がこの行に変更があれば、働いていない。この1のための

this.elements.$bar.on('click', that.example); 

を:

this.elements.$bar.on('click', function(){ that.example() }); 

つまり、メソッドを無名関数にラップすると、それは動作します。

EDIT:メソッドはコンストラクタ関数内にない場合にも動作します。..

答えて

1

私はあなたの現在のコードでは、あなたの方法を添付する方法と間違って何もないと思います。あなたのコード内で次に

this.elements = { 
    $bar : $('.bar'), 
    $foo : $('.foo') 
}; 

this.elements.$bar.on('click', that.example); 

this.elements = [ 
    $bar = $('.bar'), 
    $foo = $('.foo') 
]; 

this.elements.$bar 

代わりに、オブジェクトとしてそれらを割り当てよう:私はあなたがこのようなあなたのDOM要素と呼ばれてきたことがわかりますが詳細はサンプルjsfiddleです: http://jsfiddle.net/b1bsc1rd/

これはあなたに役立つことを願っています

+0

ああ、私はそれを考え出しました、イベントの添付ファイルはメソッドの後になければなりません、それ以外は定義されていないとjQueryは無視し、将来、同じ質問が出るかもしれない他の人にも役に立ちます。 – nick