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选择器的更多相关文章

  1. JavaScipt 源码解析 Sizzle选择器

    jQuery的定位就是一个DOM的操作库,那么可想而知选择器是一个至关重要的模块.Sizzle,作为一个独立全新的选择器引擎,出现在jQuery 1.3版本之后,并被John Resig作为一个开源的 ...

  2. JavaScipt 源码解析 回调函数

    函数是第一类对象,这是javascript中的一个重要的概念,意味着函数可以像对象一样按照第一类管理被使用,所以在javascript中的函数: 能"存储"在变量中,能作为函数的实 ...

  3. JavaScipt 源码解析 数据缓存

    常见的内存泄露的几种情况: 循环引用 JavaScript闭包 DOM插入 一个DOM对象被一个JavaScript对象引用,同时又引用同一个或其他的JavaScript对象,这个DOM对象可能回引发 ...

  4. JavaScipt 源码解析 异步

    我们常见的异步操作: 定时器setTimeout postmessage WebWorkor CSS3 动画 XMLHttpRequest HTML5的本地数据 等等- JavaScript要求在与服 ...

  5. normalize.css源码解析

    什么是normalize.css?  它是为了帮助我们统一各个浏览器的样式和消除bug的css库. 为什么需要normalize.css,有什么好处? 不像一些reset.css,normalize. ...

  6. jQuery2.x源码解析(设计篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代 ...

  7. jQuery整体架构源码解析(转载)

    jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...

  8. dojo/query源码解析

    dojo/query模块是dojo为开发者提供的dom查询接口.该模块的输出对象是一个使用css选择符来查询dom元素并返回NodeList对象的函数.同时,dojo/query模块也是一个插件,开发 ...

  9. jQuery整体架构源码解析

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

随机推荐

  1. insert table 和create table as 区别

    首先,最大的区别是二者属于不同类型的语句,前者是DML语句(数据操作语言,SQL中处理数据等操作统称为数据操纵语言),完成后需要提交才能生效,后者是DDL语句(数据定义语言,用于定义和管理 SQL 数 ...

  2. lua OOP实现对象的链式调用

    数学中的链式法则 http://sx.zxxk.com/ArticleInfo.aspx?InfoID=164649 链式微分法则:实数运算的链式法则:对数运算的链式法则:平行公理的链式法则:向量运算 ...

  3. jQuery文字特效制作文字鼠标滑过多彩色变色显示

    <!DOCTYPE html><head> <meta http-equiv="Content-Type" content="text/ht ...

  4. UNIX操作系统和Linux操作系统介绍

    UNIX操作系统(尤尼斯),是一个强大的多用户.多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson.DennisRitchie和DouglasMcI ...

  5. 挂羊头卖狗肉蓄意欺骗读者——谭浩强《C程序设计(第四版)》中所谓的“按照C99”(二)

    挂羊头卖狗肉蓄意欺骗读者——谭浩强<C程序设计(第四版)>中所谓的“按照C99”(二) 在<谭C>p4:“本书的叙述以C99标准为依据”,下面从C89到C99的主要变化方面来看 ...

  6. GridView----CustomRowCellEdit 使用注意事项

    当你在Grid和TreeList中,需要对不同的行中的某一个单元格(Cell)提供特定的RepositoryItem时,使用CustomRowCellEdit 绝对能胜任, 但在使用时千万要注意了:“ ...

  7. .Net程序员安卓学习之路4:使用xutils Get Post数据

    前面使用了一些网络上找来的类进行网络访问,后来发现了安卓开发中有一个国人写的类库xutils比较全面,也比较经典,故后续使用xutils类库进行记录. 本例服务端使用WCF来实现,写好的WCF服务端在 ...

  8. JavaWeb应用开发架构浅谈

    本文就我所经历和使用过的技术和框架, 讨论 Java / Javascript 技术组合构成的Web 应用架构. 一. 概述 Web 应用架构可以划分为两大子系统:前端子系统和后台子系统. 前端子系统 ...

  9. Make div 100% height of browser window/设置div等于浏览器的高度

    Viewport-Percentage (or Viewport-Relative) Lengths Viewport-Percentage Lengths: The viewport-percent ...

  10. [已解决]Tomcat启动报 java.net.BindException: Address already in use: JVM_Bind

    启动多个Tomcat的的时候记得要改3个端口: <Server port="8001" shutdown="SHUTDOWN"> <Conne ...