如何将“this”加入此函数... jquery滑块

时间:2014-01-13 17:49:06

标签: 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').val();
        this.draw();

    });


};

我正在使用jquery滑块动态更改形状的宽度,然后调用.draw()来重绘形状。我不断收到这个错误:

  

未捕获的TypeError:对象#没有方法'draw'

我很确定这是因为我需要将上下文“this”传递给change函数,但我似乎无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:9)

这是因为JavaScript's this is dynamic

造成的

你可以这样使用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();

});