Javascript 我怎样才能得到;这";进入这个功能。。。jquery滑块
我得到了如下结果:Javascript 我怎样才能得到;这";进入这个功能。。。jquery滑块,javascript,jquery,Javascript,Jquery,我得到了如下结果: MyShape = function() { var _container = { width: 100, height: 100 } this.draw() { //do stuff... } $('#slider-1').bind('change', function(event, ui) { _container.width = $('#slider-1')
MyShape = function() {
var _container = {
width: 100,
height: 100
}
this.draw() {
//do stuff...
}
$('#slider-1').bind('change', function(event, ui) {
_container.width = $('#slider-1').val();
this.draw();
});
};
我使用jquery滑块动态更改形状的宽度,然后调用.draw()重新绘制形状。不过,我一直会遇到这样的错误:
未捕获的TypeError:对象#没有方法“draw”
我很确定这是因为我需要将上下文“this”传递到change函数中,但我似乎不知道如何做到这一点。这是因为
您可以像这样使用Function.prototype.bind
:
$('#slider-1').on('change', function(event, ui) {
_container.width = $('slider-1').val();
this.draw();
}.bind(this) /* use the same this value */);
也可以使用闭包变量
var that = this;
$('#slider-1').on('change', function(event, ui) {
_container.width = $('slider-1').val();
that.draw();
});
另外,虽然在这个例子中,
bind
更简洁,但我认为。@Benjamin-nice-time-edit;我想指出的是,您需要使用.on
:)@Tyblitz:.on()
可能是首选,但不是必需的。@user602525:请注意,第一个示例中使用的函数.prototype.bind()
在IE8及更低版本中不可用,以及其他一些较旧的浏览器。.bind
仅使用上的别名。这是它的完整源代码函数(types,data,fn){返回这个.on(types,null,data,fn);}
。最好在
上使用,因为它是较新的界面。