CSS选择器- easyUI.cssSelector更新

2016-02-19 16:52 30 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享CSS选择器- easyUI.cssSelector更新,希望可以对大家能有小小的帮助。

【 tulaoshi.com - Web开发 】

  自从JQuery实现了Selector后,貌似其他一些JavaScript框架也开始向Selector靠拢,相继推出了自己的CSS选择器, 考虑到css选择器确实强大,所以,在easyUI中也添加了一个自己的cssSelector方法:easyUI.cssSelector('css选 择器',dom范围)
CSS选择器实现原理:
一、解析
1、格式化数据,将css选择器转换成一种便于后面进行操作的格式,这一步很重要,这是数据结构部分,后面的实现都将以此为依据。

以下面数据为例:

#a b.c .d + e:first-child f[data = "hello world!"]

首先,捕获形如 [ 属性 = 值 ] 的数据,将"="两边的空格去掉,然后将“值”里的空格替换为一个不太可能会出现的临时字串,如0x20156

然后,在+、:、、[ 符号前加空格

接着,将#、.、+、:、]、后的空格去掉

最好将单引号和双引号也都去掉

做完上述替换操作后,变可得到形如下面的数据:

#a b.c .d +e :first-child f [data=hello0xdh20156world!]

2、将格式化后的数据转换成这样的伪代码:取节点函数('css选择符',上一次操作的结果),以空格为分隔:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

取节点函数('#a',上一次操作的结果)
取节点函数('b.c',上一次操作的结果)
取节点函数('.d',上一次操作的结果)
取节点函数('+e',上一次操作的结果)
取节点函数(':first-child',上一次操作的结果)
取节点函数('f',上一次操作的结果)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

取节点函数('[data=hello0xdh20156world!]',上一次操作的结果)

3、将css选择器解析成具体的取节点函数,如:

#a应当解析成:document.getElementById('a')

E#a应当解析成:document.getElementsByTagName('E'),然后遍历id=a的

之前进行过转换的0x20156记得重新转换为空格。

更多css Selectors的解释请参见:

http://www.w3.org/TR/CSS2/selector.html

二、编写取节点函数,将伪代码实现

在easyUI.cssSelector的实现中采用的是eval的方式,目前该方法尚未完全支持CSS2选择器,还在测试阶段!

来源:http://www.tulaoshi.com/n/20160219/1613422.html

延伸阅读
标签: Web开发
关于CSS选择器优先级,目前国内已有很多人进行过解释,但感觉不如人意,特别对于初学者,更是难以理解。这里我把W3C上所描述的规范以我的理解再解释一下,希望能给大家提供到帮助。 在Calculating a selector’s specificity上的原文摘选如下: A selector’s specificity is calculated as follows: count 1 if the declaration is...
标签: Web开发
我很久以前就开始计划着整理一下CSS选择器的浏览器支持,因为CSS3增加了很多非常有用的选择器。之前我也写过一篇《使用CSS选择器创建个性化链接样式 》,作为对CSS选择器的初步研究。 kimblim网站整理了一份很全面的CSS选择器支持情况,我将其翻译过来并进行进一步的整理,将其尽可能的简化。同时结合evotech网站整理的CSS选择器支持列表,以...
标签: Web开发
我很久以前就开始计划着整理一下CSS选择器的浏览器支持,因为CSS3增加了很多非常有用的选择器。CSS属性选择器制作个性化链接样式作为对CSS选择器的初步研究。 kimblim网站整理了一份很全面的CSS选择器支持情况,我将其翻译过来并进行进一步的整理,将其尽可能的简化。同时结合evotech网站整理的CSS选择器支持列表,以及我自己平时总结的一...
标签: Web开发
一些新手朋友对选择器一知半解,不知道在什么情况下运用什么样的选择器,这是一个比较头疼的问题,针对新手朋友,对CSS选择器作一些简单的说明,希望能对大家的学习工作有一定的帮助,更多的CSS知识请参考Webjx.com的其他文章。 准确而简洁的运用CSS选择器会达到非常好的效果。我们不必通篇给每一个元素定义类(class)或ID,通过合适...
标签: Web开发
id用于标识页面唯一元素,id的名称是控制某一内容块的手段,通过将某内容块置入div并赋予唯一的id,就可以用CSS选择器来精确定义每一个页面元素的外观表现,包括标题、列表、图片、链接或者段落等等。例如你为#header写一个CSS规则,就可以完全不同于#content里的图片规则。 可以通过不同规则来定义不同内容块里的链接样式。类似这样...

经验教程

434

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部