JavaScipt 源码解析 css选择器
css1-css3提供了很多选择器,总得来说分为几大类:
群组选择器:逗号","
简单选择器:ID,标签,类,属性,通配符
关系选择器:孩子,后代,兄弟,相邻
伪类选择器:动作伪类,目标伪类,语言伪类,状态伪类,结构伪类,取反伪类。
群组选择器用于分组合并多个处理的结构
selector1,selector2,selectorN
简单选择器# . [ * 这些都有内置原生API的支持,不过存在兼容问题。
属性选择器在css2.1中只有4种。
[attr][attr=val][attr~=val][attr|=val]
css3中又增加了3种:
[attr^=val][attr$=val][attr*=val]
除此外jQuery还实现了自定义的属性选择器
[attrubute!='value'][attributeFilter1][attributeFilter2][attributeFilterN]
关系选择器
parent>child
prev+next
pre~siblings
伪类
基本筛选器:eq get first last it not odd root.....
内容筛选器: contains empty has parent.....
可见筛选器:hidden visible
子元素筛选器:first-child nth-child only-child.......
表单:bottom checkbox foucs input text.......
内置方法的兼容处理
关于属性attributes
简单来说,就是ie8之前的版本,需使用getAttribute('className')才能获得class属性的值,ff以及ie8之后的版本是w3c的标本getAttribute('class').
这是因为ie混淆了DOM对象属性及HTML标签属性attribute,造成了对setAttribute,getAttribute的不正确实现
关于getElementById
查找元素是最常见的DOM操作,我们可以使用document对象提提供的方法。
document.getElementById
取到有id的元素节点
var div = document.getElementById("myDiv");
这个是最常见的处理,但是如果id是小写
var div = document.getElementById(mydiv);//ie7之前是可以的。ie8之前是不区分大小写的
除此外,如果页面有多个id相同,也只会返回文档中第一次出现的元素,ie之前在针对表单的处理时候,表单的name和id重名,并且name在id之前,则会返回表单元素
关于getElementByTagName
如果选择器是通配符 * 的话ie6-8会混杂注释节点,所以针对如果是tag为 *的情况,我们需要做一个兼容的处理。
JavaScipt 源码解析 css选择器的更多相关文章
- JavaScipt 源码解析 Sizzle选择器
jQuery的定位就是一个DOM的操作库,那么可想而知选择器是一个至关重要的模块.Sizzle,作为一个独立全新的选择器引擎,出现在jQuery 1.3版本之后,并被John Resig作为一个开源的 ...
- JavaScipt 源码解析 回调函数
函数是第一类对象,这是javascript中的一个重要的概念,意味着函数可以像对象一样按照第一类管理被使用,所以在javascript中的函数: 能"存储"在变量中,能作为函数的实 ...
- JavaScipt 源码解析 数据缓存
常见的内存泄露的几种情况: 循环引用 JavaScript闭包 DOM插入 一个DOM对象被一个JavaScript对象引用,同时又引用同一个或其他的JavaScript对象,这个DOM对象可能回引发 ...
- JavaScipt 源码解析 异步
我们常见的异步操作: 定时器setTimeout postmessage WebWorkor CSS3 动画 XMLHttpRequest HTML5的本地数据 等等- JavaScript要求在与服 ...
- normalize.css源码解析
什么是normalize.css? 它是为了帮助我们统一各个浏览器的样式和消除bug的css库. 为什么需要normalize.css,有什么好处? 不像一些reset.css,normalize. ...
- jQuery2.x源码解析(设计篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代 ...
- jQuery整体架构源码解析(转载)
jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...
- dojo/query源码解析
dojo/query模块是dojo为开发者提供的dom查询接口.该模块的输出对象是一个使用css选择符来查询dom元素并返回NodeList对象的函数.同时,dojo/query模块也是一个插件,开发 ...
- jQuery整体架构源码解析
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
随机推荐
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
历时数月,RDIFramework.NET V2.7 版本发布了,感谢大家的支持. RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系 ...
- R数据实战vehicles--1
新建项目vehicles-project 数据文件vehicles.csv与varlabels.txt放在项目文件中
- 友善p35屏
友善p35 屏,x轴方向从左往右移(0——>320),Y轴方向从上往下开始(0——>240)
- C# TreeView的CheckBox 父/子节点点击联动选择效果
注: 点击时请正常速度点击,不然会出现“奇怪”现象!!! /// <summary> /// 节点点击 子级->同级->父级 /// </summary> /// ...
- FORM 提示保存
修改的FORM在编译到测试环境后打开并没有修改什么数据,却提示是否保存,检查->system.form_satus 为"changed": 个人实际解决情况为:在数据块级的触 ...
- SVN和Git的异同
其实Git和SVN还是挺像的,都有提交,合并等操作,看来这是源码管理工具的基本操作. 1. Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后 ...
- Spring MVC 学习资料
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”.以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Jav ...
- SQL2008根据日志恢复
--创建测试数据库 CREATE DATABASE Db GO --对数据库进行备份 BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT GO --创 ...
- Dynamics AX 2012 R2 耗尽用户
有时,你想执行一些操作,但是这些操作必须让所有用户都登出后才能执行,例如加强安全设置,创建虚拟公司等.这时,你可以使用系统的耗尽用户(Darin Users)功能.下面跟随Reinhard一起,设置耗 ...
- Linux多节点互信配置
SSH互信设置步骤: 1. 每个节点上分别生成自己的公钥和私钥 2. 将各节点的公钥文件汇总到一个总的认证文件authorized_keys中 3. 将这个包含了所有节点公钥的认证文件au ...