首先,我甚至不确定,如果这是正确的方法。
让我们说,我有这样的脚本(包括jquery):
foo = function() {
this.bar = function() {
alert('I\'m bar');
}
this.test = function() {
$('body').append('<a onclick="my_var.bar();">Click me</a>');
}
this.test();
}
var my_var = new foo();
有什么办法,我可以在函数“foo”中创建变量“my_var”动态。 所以我可以做类似
的事情$('body').append('<a onclick="'+the_variable_which_im_assigned_to+'.bar();">Click me</a>');
谢谢
//编辑:
如果我不够清楚,我很抱歉,因为我不太确定自己要做什么。
我的目标是更换行
$('body').append('<a onclick="my_var.bar();">Click me</a>');
与
$('body').append('<a onclick="'+what_ever_should_go_here+'.bar();">Click me</a>');
所以当我打电话时
var my_var = new foo();
var your_var = new foo();
var our_var = new foo();
我可以在每个对象中调用函数(在它们附加到文档正文中之后)。
答案 0 :(得分:2)
您应该使用匿名处理函数而不是内联事件,如下所示:
$('<a href="#">Click Me</a>')
.click(function() { my_var.bar(); return false; })
.appendTo('body');
答案 1 :(得分:1)
除了从内联事件处理程序切换之外,您还需要使用closure来访问处理程序中的Foo实例。
function Foo() {
var self = this;
this.test = function() {
$('body').append(
$('<button>something</button>').click(function () {
self.bar(); return false;
}));
}
}
答案 2 :(得分:0)
如果这是您希望/需要用于附加事件处理程序的一般计划,是的,请将变量的名称发送到foo
引用的函数:
foo = function(name_of_the_variable_which_im_assigned_to) { [...] };