如何将其绑定到jQuery的事件?

时间:2016-10-09 09:25:46

标签: javascript jquery twitter-bootstrap

如何将其绑定到jQuery的事件?

例如,对于下面的push menu,我必须“记住”thisvar root

class PushMenu {
    constructor() {
        this.slideShown = false;
        var root = this;
        $('.navmenu').on('shown.bs.offcanvas', function() {
            root.slideShown = true;
        });
    }
}

但我想知道我是否可以绑定this以便我可以保存var root

class PushMenu {
    constructor() {
        this.slideShown = false;
        $('.navmenu').on('shown.bs.offcanvas', function() {
            this.slideShown = true;
        });
    }
}

这可能吗?

2 个答案:

答案 0 :(得分:3)

您正在使用es6类,所以我假设es6语法可以使用arrow function

$('.navmenu').on('shown.bs.offcanvas', () => {
    this.slideShown = true;
});

答案 1 :(得分:2)

使用jQuery.proxy()

接受一个函数并返回一个始终具有特定上下文的新函数。

class PushMenu {
    constructor() {
        this.slideShown = false;
        $('.navmenu').on('shown.bs.offcanvas', jQuery.proxy(function() {
            this.slideShown = true;
        }, this));
    }
}

我们可以在这里使用jQuery.proxy所以对此的引用是指PushMenu的对象而不是触发事件的元素。

<强>文档