2013-10-31 37 views
0

我有一个名为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()和$数据()方法。不幸的是我没有成功。你有什么想法?提前感谢您的帮助。

回答

0

线

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); 
} 
+0

嗨利玛窦,THX你的答案。 “这个”已经指向了divElement。 this.id返回正确的ID。因此,this.divElement不起作用,不幸的是。 – donald

+0

编辑我的回答:) –

+0

酷:-)你为我节省了很多时间,感到沮丧。你有这样奇怪的方式解决这个问题吗? – donald