Javascript 单击事件oop
我想创建一个点击事件 但是,controlCount()中console.log的值不同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
函数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));