我有一個Foo類,它有一個生成顯示HTML的方法。我希望HTML有一個調用Foo.clickHandler的onclick事件處理程序。問題是我不知道這個特定的Foo實例是如何命名的。同樣,onclick事件也無法知道如何訪問foo的這個實例。下面是一些代碼:從html事件調用javascript類方法的正確方法
function Foo(){
this.nonStaticVariable='Something non-static (different for every instance of Foo).';
this.getHTML=function(){
return '<a href="javascript:void(0);" onclick="/* How do I call Foo.clickHandler? */">Click Me!</a>';
}
this.clickHandler=function(){
alert(nonStaticVariable);
}
}
非靜態函數的一點是要表明的onclick需要調用foo的正確實例。
我曾經想過傳遞一個字符串,美孚,裏面有包含富變量名,但是這似乎反OOP:
function Foo(container){
this.container=container;
this.nonStaticVariable='Something non-static (different for every instance of Foo).';
this.getHTML=function(){
return '<a href="javascript:void(0);" onclick="'+container+'.clickHandler();">Click Me!</a>';
}
this.clickHandler=function(){
alert(nonStaticVariable);
}
}
var fooInstance=new Foo('fooInstance');
你有什麼建議?
我對jQuery解決方案也很開放。
還,如果你使用jQuery的,它會更容易 – Huangism
我願意jQuery的解決方案。 – Joel
以及jquery,您可以簡單地將該變量的名稱添加到錨標記中,作爲像這樣的屬性。因爲我們使用的是jQuery,所以你不需要onclick,只需要使用onclick函數或者它的更新版本捕獲點擊$('elementCSSselector')。onclick(function(){// do whatever});在onclick處理程序中,您可以獲取錨標記的屬性(在本例中爲rev),並輸出它。如果你不知道jquery,我建議你谷歌或閱讀文檔,這很簡單。對於面向對象,把onlcick放在你的對象內的一個偶然處理程序中 – Huangism