【发布时间】:2009-07-28 14:49:09
【问题描述】:
我有一个名为 ValueBox 的对象,我是这样创建的:
function ValueBox(params) {
...
$.extend(true, this, $('/* some HTML elements */'));
...
var $inputBox = $('input[type=text]', this);
...
this.val = function(newValue) {
if(typeof newValue == "number") {
$inputBox.val(newValue);
$inputBox.change();
} else {
return parseFloat($inputBox.val());
}
}
}
我在一个特定的 ValueBox 实例上有一个 change 事件,每当 $inputBox 发生更改时就会触发该事件,但更改回调函数无法在我的类中使用 val() 方法。我假设通过使用 $(this).val() 我正在调用 jQuery val() 方法,这当然是行不通的。是否可以访问我定义的 val() 方法?
【问题讨论】:
-
“无法使用”是什么意思(澄清)。它无法访问它?您是否尝试从 firebug 调用 val 方法?它对我来说当然是公开的。
-
我的理解是,在更改处理程序中,关键字“this”指的是元素本身,而不是我创建的对象。如果我像 $(this) 一样包装它,它只是使用普通的 jQuery 对象而不是我的。
-
哦!好的,我想我知道解决办法。
标签: javascript jquery inheritance oop user-defined