js获取当前点击的
事件委托,原生js;伪代码:点击ul后清空ul下所有li的类名(使其所有元素不可见); 获取被点击的dom节点li(event.target);改变被点击的元素类名(使其可见); 解释:利用addEventListener给最上级元素绑定点击事件;点击后触发匿名函数,清除除了当前点击的节点外所有的子元素类名(可使用event.target获取当前被点击的dom节点)(清除其他类名可用jquery的类选择器以及jquery的removeClass函数);给当前点击的元素赋予新的类名,改变样式。
jQuery如何监听DIV的宽度变化而不是窗口的宽度变化?
你可以试试html5的API:MutationObserver,非常强大可以监控一切变动;
特性如下:
1、它等待所有脚本任务完成后,才会运行,即采用异步方式
2、它把DOM变动记录封装成一个数组进行处理,而不是一条条地个别处理DOM变动。
3、它即可以观察发生在DOM节点的所有变动,也可以观察某一类变动
详细说就是,事件是同步触发,也就是说DOM发生变动立刻会触发相应的事件;Mutation
Observer则是异步触发,DOM发生变动以后,并不会马上触发,而是要等到当前所有DOM操作都结束后才触发。
举例来说,如果在文档中连续插入1000个段落(p元素),会连续触发1000个插入事件,执行每个事件的回调函数,这很可能造成浏览器的卡顿;而Mutation
Observer完全不同,只在1000个段落都插入结束后才会触发,而且只触发一次。
当然,一般情况下没什么问题。
示例代码如下:
varcallback=function(records){
records.map(function(record){
console.log('变动type:'+record.type);
console.log('变动target:'+record.target);
});
};
varobser=newMutationObserver(callback);
varobj=document.getElementById('right_col_peck');
varoptions={
attributes:true,
attributeFilter:['class']
};
obser.observe(obj,options);//开始监听
();//停止监听
Ps:MutationObserver所观察的DOM变动(即上面代码的options对象),包含以下类型:
1、childList:子元素的变动
2、attributes:属性的变动
3、characterData:节点内容或节点文本的变动
4、subtree:所有下属节点(包括子节点和子节点的子节点)的变动
Git目前越来越受关注,它有哪些优点呢?
历史总是惊人的相似,Git版本控制系统其实是一个业余项目,因为找不到好的已有的好的解决方案,林纳斯为了Linux kernel项目也就是Linux的内核项目代码能够管理起来方便,就开发了Git版本管理系统,只是没有想到,会受到这么多人的喜欢,以Git为基础,甚至诞生了Github、Gitlab这样的独角兽级别的科技公司。
- 这样的故事是不是好像似曾相识?
当年高德纳老爷子,写TAOCP(计算机界的相对论,与相对论等并评为二十世纪最伟大的科学专著之一,老爷子就凭这本书拿了图灵奖)的时候,发现市面上的排版系统乱糟糟的,完全影响了自己的这部艺术科学著作的创作,于是他立志要自己写一个排版系统,也就是大名鼎鼎的Tex电子排版系统。
言归正传,为什么Git能够火?
Git因为是分布式版本控制系统,这让Git相对于SVN有了很多优势,SVN中心服务器挂掉,就麻烦了。
Git效率更高,可以节省很多时间。
Git可以很好的离线工作,SVN和CVS这些集中式版本管理系统,如果连接不上中央服务器,那么工作起来就很麻烦。随时随地工作Git不会给你做任何的限制,提交、查看历史、创建分支等工作你完全可以在本地完成。
可靠性高,撤销起来方便。你几乎不用担心会出问题,而且理论上Git从不会真正删除代码,每一个团队成员在本地都有一个完整的项目备份,团队成员都克隆了整个项目在他们的本地计算机。而且Git都是增量操作,也就是说几乎所有的Git操作都是数据添加,而不会删除,所以你不用担心数据丢失或者仓库损坏。而且几乎所有情况下,你都能撤销几乎所有的操作。
更少的“仓库污染”,Git对于每个工程只会产生一个.git目录,这个工程所有的版本控制信息都在这个目录中,不会像SVN在每个目录下都会产生.svn目录。这样可以说极大的减少了代码仓库的污染。
经过这么多年的发展,Git已经是最受欢迎的版本系统了,几乎现在所有的知名开源项目都在向Git靠拢,Debian,Linux kernel,Ruby On Rails等知名开源项目都构建在Git上,而且以Git为基础的代码仓库GitHub、Gitlab都成了知名的开源代码仓库。