我有一个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