我正在使用原型javascript库。我的代码如下。我创建了一个类,在该类中,我为其中一个类方法创建了一个事件监听器。在该方法中,我需要访问触发事件的表单元素的属性和类属性。目前,代码在事件中理解$(this).getValue(),因为它被分配给触发事件的表单元素。如何从事件函数访问this.makingRequest和this.user属性?我能以某种方式将它们作为参数传递给我吗?如果是这样,怎么样?我没有尝试过这一点。谢谢你的帮助。
function AddressBookEntryObj(user, selectField)
{
this.selectField = selectField;
this.user = user;
this.makingRequest = false;
this.debugMode = false;
Event.observe(this.selectField, 'change', handleEvent);
}
//Prototype statements
AddressBookEntryObj.prototype.handleEvent = handleEvent;
//End prototype statements
function handleEvent()
{
try
{
if (!this.makingRequest)
{
this.makingRequest = true;
var ajax =
new Ajax.Request(
'/servlet/MyReallyCoolServlet',
{
method: 'get',
parameters: {
action: 'doGet',
whichFunc: 'MyReallyCoolFunction',
fieldValue: $(this).getValue(),
user: this.user
},
onCreate: handleAjaxCreate,
onComplete: handleChangeComplete
}
);
return true;
}
else
{
return false;
}
}
catch (ex)
{
alert("handleEvent Error: \r\n" + ex.toString());
}
}
谢谢!
安德鲁
答案 0 :(得分:0)
首先使用:
AddressBookEntryObj.prototype.handleEvent = function()
{
}
然后handleEvent中的this
应该指向AddressBookEntryObj
。为了确保它在该函数内的任何地方都可以使用,例如:
var _this = this;
然后在任何事件处理程序中使用_this
。
答案 1 :(得分:0)
看看我用你的代码制作的这个jsfiddle。您需要将“bind(this)”添加到回调处理程序中。这样做会使“this”成为你的对象并使用“e.target”来访问html元素。
_Michael