持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
1.src 和 href 的区别是?
区别
src(source)指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;
在 请求 src 资源时会将其指向的资源下载并应用到文档中,如 JavaScript 脚本,img 图
片和 iframe 等元素
当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,类似于将所指向资源嵌入当前标签内
href(hypertext reference/超文本引用)指向网络资源所在位置,建立和当前元素(锚点)
或 当 前 文 档 ( 链 接 ) 之 间 的 链 接 , 如 果 我 们 在 文 档 中 添 加 <link
href="common.css"rel="stylesheet"/>那么浏览器会识别该文档为 CSS 文件,就会并行下载
资源并且不会停止对当前文档的处理
2.事件委托
JavaScript 事件代理则是一种简单的技巧,把事件处理器添加到一个上级元素上,这样
就避免了把事件处理器添加到多个子级元素上。这主要得益于浏览器的事件冒泡机制。
优点:
1、减少事件注册,节省内存。
2、在 table 上代理所有 td 的 click 事件。
3、在 ul 上代理所有 li 的 click 事件。
4、简化了 dom 节点更新时,相应事件的更新。
5、不用在新添加的 li 上绑定 click 事件。
6、当删除某个 li 时,不用移解绑上面的 click 事件。
缺点:
1、事件委托基于冒泡,对于不冒泡的事件不支持
2、层级过多,冒泡过程中,可能会被某层阻止掉。
3、理论上委托会导致浏览器频繁调用处理函数,虽然很可能不需要处理。所以建议就近委托,
比如在 table 上代理 td,而不是在 document 上代理 td。
4、把所有事件都用代理就可能会出现事件误判。比如,在 document 中代理了所有 button 的
click 事件,另外的人在引用改 js 时,可能不知道,造成单击 button 触发了两个 click 事件