Ruby's Louvre

每天学习一点点算法

导航

2010年12月5日 #

选择器切割正则的进化

摘要: //标签,ID 类 伪类 属性的标识符 它们的主体部分,亲子相邻兄长并联通配符,空白var reg = /[\w\u00a1-\uFFFF][\w\u00a1-\uFFFF-]*|[#.:\[][\w\(\)\]]+|\s*[>+~,*]\s*|\s+/g //让小括号里面的东西不被切割var reg = /[\w\u00a1-\uFFFF][\w\u00a1-\uFFFF-]*|[#.:\[](?:[\w\u00a1-\uFFFF-]|\([^\)]*\)|\])+|(?:\s*)[>+~,*](?:\s*)|\s+/g ... 阅读全文

posted @ 2010-12-05 21:02 司徒正美 阅读(1245) 评论(0) 推荐(0) 编辑

mass.query v3 发布

摘要: 我想query v2这种设计思路已到瓶颈了,把选择器群组切割成最小颗粒,然后在循环中从文档对象找到一个或多个节点,然后再到下一个循环找到它们的孩子或直接从它们当中筛选……为此付出的代价也非常多——颗粒越多,循环次数也越多,虽然我在每个分支不断让指针向后移。但这也太累了,有些颗粒需要合并了才有意义。不过最令人痛心的问题是,也是所有从左到右选择的选择器不得不面临问题是,如果出现并联、亲子、兄长、相邻等选择器,得到的元素集合就很有可能不是按文档顺序排列。因此我下一版将尝试从右到左。不过从右到左最大的问题就是后代选择器,这种不断往上回溯的算法非常难,这也是jQuery在处理关系选择器容易出现错的原因。 阅读全文

posted @ 2010-12-05 15:23 司徒正美 阅读(2779) 评论(9) 推荐(1) 编辑