Javascript 单击事件oop

Javascript 单击事件oop,javascript,jquery,oop,Javascript,Jquery,Oop,我想创建一个点击事件 但是,controlCount()中console.log的值不同 函数Spinbox(){ 这个最小计数=180; 此.MAX_计数=220; 这个.$inputBox=$(``); 此.$increaseButton=$(`+`); 此.$decreaseButton=$(`-`); } Spinbox.prototype.controlCount=函数(){ log(this.$inputBox.val()); //不工作。因为这=+ } Spinbox.proto

我想创建一个点击事件

但是,controlCount()中console.log的值不同

函数Spinbox(){
这个最小计数=180;
此.MAX_计数=220;
这个.$inputBox=$(``);
此.$increaseButton=$(`+`);
此.$decreaseButton=$(`-`);
}
Spinbox.prototype.controlCount=函数(){
log(this.$inputBox.val());
//不工作。因为这=+
}
Spinbox.prototype.create=函数(){
此.increaseButton。单击(此.controlCount);
$(“#wrap”).append(此.$inputBox);
$(“#wrap”).append(此.$increaseButton);
$(“#wrap”).append(此.$decrease按钮);
}
var spinbox1=新的Spinbox();
spinbox1.create()

您的问题是因为在单击处理程序的范围内,即您的
controlCount()
函数中,
将引用单击的按钮,而不是
Spinbox()

要解决这个问题,您可以将
这个
直接转到jQuery对象。但是,请注意,两个按钮都没有
属性。大概这是一个疏忽,所以我在这个例子中添加了它:

函数Spinbox(){
这个最小计数=180;
此.MAX_计数=220;
这个.$inputBox=$(``);
此.$increaseButton=$(`+`);
此.$decreaseButton=$(`-`);
}
Spinbox.prototype.controlCount=函数(){
log($(this.val());
}
Spinbox.prototype.create=函数(){
此.increaseButton。单击(此.controlCount);
$(“#wrap”).append(此.$inputBox);
$(“#wrap”).append(此.$increaseButton);
$(“#wrap”).append(此.$decrease按钮);
}
var spinbox1=新的Spinbox();
spinbox1.create()

最简单的解决方案是在分配“单击”事件时,在行中使用
jQuery.proxy()
helper:


阅读中的
jQuery.proxy
的更多信息。它将使用您的
Spinbox
对象作为
this

调用该方法。您为什么要尝试获取按钮的
val
?您想要按钮的
文本吗<代码>此。$increaseButton.text()
?那只会给你+符号。对不起,我错了。我修改我的问题
this.$increaseButton.click($.proxy(this.controlCount, this));