Javascript 循环引用不';似乎无法在事件处理程序函数中工作

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

我有一个名为paperClass的对象(尽管我知道,类在JScript中并不存在)。它包含对divElement的引用。现在,通过悬停divElement,我想获得paperClass对象的引用。我试过以下方法:

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](五)文件;