在循环中提到这个?

时间:2014-06-02 16:19:51

标签: javascript jquery

p._initEvents = function() {

    $(window).on('drop', this.onDrop.bind(this)).on('dragover', this.onDragOver);

};


p.onDrop = function(e) {

    e.preventDefault();

    var files = e.originalEvent.dataTransfer.files;
    $.each(files, function(index, file){
        this.showTemplate();
    });

};

p.showTemplate = function() {

    console.log('show template');
};

我正在尝试运行this.showTemplate(),但错误说它未定义,我相信它与绑定它有关。

我已经为onDrop方法绑定了这个,但是我不确定在循环中访问它的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

你可以做的一件事是在$.each()函数之外声明一个这个变量......

p.onDrop = function(e) {

    e.preventDefault();

    var myThis = this;

    var files = e.originalEvent.dataTransfer.files;
    $.each(files, function(index, file){
        myThis.showTemplate();
    });

};