function cat() {
this.getMyID = function() { alert(this.id); } ;
}
var bob = new cat();
// I want it to say 'bob'
bob.getMyID();
警告undefined,任何想法?
我会详细说明,这就是我想要做的事情 - 插入按钮的onclick方法,调用另一个函数,例如:
function cat() {
this.render = function() { $('#myButton').attr('onclick', 'this.meow()'); };
}
var bob = new cat();
bob.render();
但是这会失败,因为'this.meow'是无稽之谈。如果我知道ID,即。 bob,然后我可以将其更改为.attr('onclick', theID + '.meow()'); };
答案 0 :(得分:2)
关于您的更新:
假设cat
有方法meow
,您应该执行以下操作:
function Cat() {
var that = this;
this.render = function() {
$('#myButton').click(function() {
that.meow();
});
};
}
// assuming it exists something like
Cat.prototype.meow = function() {/*...*/};
您已经有对象(this
)的引用,您不需要知道它存储在哪个变量中。
您还应该使用jQuery的click
函数来分配点击处理程序。但要小心,因为每次调用render()
时都会添加一个新的点击处理程序。
答案 1 :(得分:1)
通用“对象”没有ID - 他们不知道绑定到它们的变量。
此外你可以说:
var bob = new cat();
var alice = bob;
此时你有一只精神分裂症的猫。
答案 2 :(得分:0)
它警告undefined
,因为cat没有“id”属性。不确定你如何期望它有一个id。
答案 3 :(得分:0)
我会尝试......
我会详细说明,这就是我想要的 do - 插入onclick方法 一个叫另一个的按钮 功能,
这是一些代码......它是否关闭?
var bobthefunction = function () {
// do crazy stuff
}
$("buttonname").attr("onclick",bobthefunction);
或
$("buttonname").click(bobthefunction);
答案 4 :(得分:0)
你可以做的是使用闭包:
function cat() {
this.render = function()
{
$('#myButton').click(function(self )
{
return function() { self.meow() }
}(this));
}
}
顺便说一下,不建议使用.attr附加事件处理程序 - 它并不总是适用于所有浏览器/案例。你最好使用.bind或者像.click这样的快捷方式