2010-09-20 40 views
3

我在一個類中有一個方法和這個方法我有一個div元素的click事件的處理程序:jQuery的click處理程序和麪向對象編程

function MyClass(container) 
{ 
    this.Container=container; 
    this.PrepareHandlers = function() 
    { 

     $('#Div1').click(function() { 
      alert(this.Container); 
     }); 
    }; 
} 

但因爲即時通訊進入處理程序,「這「是被點擊的元素。有可能從方法中聲明的處理程序訪問對象的屬性?

回答

4
function MyClass(container) 
{ 
    var self = this; 
    this.Container=container; 
    this.PrepareHandlers = function() 
    { 

     $('#Div1').click(function() { 
      alert(self.Container); 
     }); 
    }; 
} 
0

糾正我,如果我錯了。 「this」應該指向單擊中的函數(){..}?

+0

jQuery使用'Function.apply()'([閱讀全文](http://www.devguru.com/technologies /ecmascript/quickref/apply.html))在事件處理函數的上下文中改變'this'的含義。在jQuery事件處理程序中,'this'引用觸發事件的DOM節點。 – josh3736 2010-09-20 16:08:42

0

您也可能想嘗試的jQuery 1.4的代理方法:http://api.jquery.com/jQuery.proxy/

function MyClass(container) 
{ 
    this.Container=container; 
    this.PrepareHandlers = function() 
    { 
     $('#Div1').click(function() { 
     alert(jQuery.proxy(MyClass.Container, MyClass)); 
     }); 
    } 
}