2011-06-24 4 views
0

私はこれをやろうとしている:FOOのJqueryイベントはオブジェクトでは機能しませんか?

var foo = new Foo(); 
foo.setEvents(foo); 

コード:

function Foo() 
{ 
    this.id = getId(); //this works successfully, each instance of foo gets 
          //assigned a new auto incrementing id e.g 1, 2, 3, etc 

    this.setEvents = function(that) 
    { 
     $("#myButton").click(that.bar); 
    } 

    this.bar = function() 
    { 
     alert(this.id); 
    } 
} 

私はこのコードを実行すると、私のボタンをクリックするたびに、私は

「未定義」という警告を取得

イベントがトリガーされたときにメソッドを実行したいオブジェクトの状態を保持するにはどうしたらいいですか?

+6

あなたのハンドルとアバターは私にこの質問をd​​ownvoteしたい。 –

+1

[それは私のために働く](http://jsfiddle.net/alexdickson/DAPYt/)。 – alex

+2

@alex彼は、オブジェクトではなく、ボタンのIDを取得することを期待していました。 –

答えて

1

これはjQuerysスコープ内の別の何かを指し...その関数が呼び出される

function Foo() 
{ 
    obj=this; 
    this.id = 1; //this works successfully, each instance of foo gets 
          //assigned a new auto incrementing id e.g 1, 2, 3, etc 

    this.setEvents = function(that) 
    { 
     $("#myButton").click(that.bar); 
    } 

    this.bar = function() 
    { 
     console.log(obj) 
    } 
} 
var foo = new Foo(); 
foo.setEvents(foo); 
1

、イベントを処理し、ネイティブDOM要素へthisポイント。

この機能の範囲で解決できるオブジェクト自体への参照が必要です。

これを行う一般的な方法は、var that = thisです。

jsFiddle

関連する問題