Javascript CollapseSidebar不是一个函数
我正在为一个项目编写一个脚本,它有一个功能,可以在单击hamdurger图标时折叠或打开侧边栏,但当我单击它时,会出现错误 TypeError:this.CollapseSidebar不是函数 以下是我的代码:Javascript CollapseSidebar不是一个函数,javascript,jquery,Javascript,Jquery,我正在为一个项目编写一个脚本,它有一个功能,可以在单击hamdurger图标时折叠或打开侧边栏,但当我单击它时,会出现错误 TypeError:this.CollapseSidebar不是函数 以下是我的代码: (function($) { 'use strict'; var Prtm = { Constants: { LEFTMARGIN:'315px', COLLAPSELEFTMARGIN: '63px',
(function($) {
'use strict';
var Prtm = {
Constants: {
LEFTMARGIN:'315px',
COLLAPSELEFTMARGIN: '63px',
},
PrtmEle:{
BODY: $('body'),
SIDEBAR: $('.prtm-sidebar'),
SIDENAV: $('.sidebar-nav'),
MAIN: $('.prtm-main'),
HEADER: $('.prtm-header'),
CONTENTWRAP: $('.prtm-content-wrapper'),
CONTENT: $('.prtm-content'),
PRTMBLOCK: $('.prtm-block'),
FOOTER: $('.prtm-footer'),
HAMBURGER: $('.prtm-bars'),
},
Init:function(){
this.BindEvents();
},
BindEvents:function(){
this.PrtmEle.BODY.on('click',this.PrtmEle.HAMBURGER,function(){
this.CollapseSidebar();
});
},
CollapseSidebar: function(){
this.PrtmEle.HAMBURGER.toggleClass("prtm-sidebar-closed is-active");
this.PrtmEle.BODY.toggleClass("prtm-sidebar-closed is-active");
this.PrtmEle.SIDEBAR.toggleClass('collapse');
},
};
Prtm.Init();
})(jQuery);
当我将this.CollapseSidebar
更改为Prtm.CollapseSidebar
时,它工作正常。我在这里做错了什么以及如何解决它?为什么它不起作用?因为函数()绑定了它自己的函数
您可以做的一件事是使用不绑定自己的this
-如下所示:
BindEvents:function(){
this.PrtmEle.BODY.on('click',this.PrtmEle.HAMBURGER,() => {
this.CollapseSidebar();
});
}
在内部单击函数,该
将引用窗口
——因此您可以创建如下所示的临时变量或使用箭头函数:
谢谢,但我真的想知道=>在这里意味着什么以及它是如何工作的。这就是所谓的箭头函数-与
function(){
的工作原理相同,只是它没有给你这个
或参数
-链接了上面的文档:)
BindEvents:function() {
let $this = this;
this.PrtmEle.BODY.on('click',this.PrtmEle.HAMBURGER,function() {
$this.CollapseSidebar();
});
}