如何将其绑定到jQuery的事件?
例如,对于下面的push menu,我必须“记住”this
到var 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;
});
}
}
这可能吗?
答案 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的对象而不是触发事件的元素。
<强>文档强>