Javascript 循环引用不';似乎无法在事件处理程序函数中工作
我有一个名为paperClass的对象(尽管我知道,类在JScript中并不存在)。它包含对divElement的引用。现在,通过悬停divElement,我想获得paperClass对象的引用。我试过以下方法:Javascript 循环引用不';似乎无法在事件处理程序函数中工作,javascript,events,this,cyclic,Javascript,Events,This,Cyclic,我有一个名为paperClass的对象(尽管我知道,类在JScript中并不存在)。它包含对divElement的引用。现在,通过悬停divElement,我想获得paperClass对象的引用。我试过以下方法: function paperClass(){ this.divElement = $("#divElementID"); this.divElement.paperElement = this; this.divElement.hover(this.handle
function paperClass(){
this.divElement = $("#divElementID");
this.divElement.paperElement = this;
this.divElement.hover(this.handleHover);
console.log(this.divElement.attr("id")); // -> divElementID
console.log(this.divElement.paperElement); // -> paperClass Object
}
paperClass.prototype.handleHover = function(event){
console.log(this.id); // -> divElementID
console.log($(this).attr("id")); // -> divElementID
console.log(this.paperElement); // -> undefined (which seems ok to me)
console.log($(this).paperElement); // -> undefined (WHY????)
}
我还尝试了.attr()和$data()方法。不幸的是我没有成功。你有什么想法吗?非常感谢您的帮助。电话线
console.log($(this).paperElement); // -> undefined (WHY????)
未定义paperElement
属性,因为它仅存在于绑定到this.divElement
的特定jQuery对象中
如果您创建了一个新的jQuery对象,它将只由jQuery库设置其默认属性
请尝试以下方法:
function paperClass(){
this.divElement = $("#divElementID");
this.divElement[0].paperElement = this; // change this line
this.divElement.hover(this.handleHover);
console.log(this.divElement.attr("id"));
console.log(this.divElement.paperElement);
}
paperClass.prototype.handleHover = function(event){
console.log(this.id);
console.log(this.paperElement);
}
你好,Matteo,谢谢你的回答。“this”已经指向divElement。this.id返回正确的id。因此,this.divElement也不起作用。。。不幸的是。酷:-)你节省了我很多时间,让我感到沮丧。你有没有解释过为什么要这样奇怪?这并不奇怪,请再次阅读我的回答:
如果你创建了一个新的jQuery对象,它将只有jQuery库设置的默认属性。
,但我认为如果你更改paperClass
函数:console.log($(this)[0](五)文件;代码>