Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我怎样才能得到;这";进入这个功能。。。jquery滑块_Javascript_Jquery - Fatal编程技术网

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);}
。最好在
上使用
,因为它是较新的界面。