搜索 mocha
你看一下console.log(this.el);的结果。如果是null,说明你在获取this.el这个dom对象时出现错误,看是否是拼写出现问题
不仅仅是关闭按钮会相应 click 事件,sidebar的子元素 ul也会响应 ,老师这样写是因为他在后面给ul元素标签终止click事件冒泡。建议你去看一下JS事件冒泡机制~
报错 你不能读取未定义的target属性
你没发现event.target不在function(event)函数里吗
试一下把下面这段放入
function(event){
if( event.target !==this.el){ //此句报错
self.triggerSwitch();
}
}
我也初学 不对勿喷
content.log("打开或关闭");
实例化。
闭包或者dom加载问题
这里涉及 function 中 this 的相关知识,在函数被“调用”的时候,this 指的是调用对象,而这里的调用对象是 “this.el”,也就是页面的侧边栏对象,由于没有定义 triggerSwitch 方法,所以报错。 Siderbar 构造函数中的 this,如果是在以“构造函数”方式使用(也就是 new Sidebar())时,指的是将要被创建的对象实例,所以 this.el 指的是 sidebar 对象的属性。但是,如果是以“Sidebar()”方式使用上面定义的构造函数,由于没有明确的调用该函数的对象,在浏览器环境下会将 window 对象作为 this,这也就是前面说的构造函数命名上首字母大写,以便提醒使用者采用“new Sidebar()”的方式。 详细内容建议参考《JavaScript 高级程序设计》或《JavaScript 权威指南》的相关章节。