网络编程
位置:首页>> 网络编程>> JavaScript>> Javascript Selectors 入门篇

Javascript Selectors 入门篇

作者:Denis 来源:aliued.com 发布时间:2010-04-12 12:55:00 

标签:Javascript,Selectors,Dom

作为前端开发工程师,平时对于Dom的查找遍历和操作是家常便饭。对于优秀的前端来说,也肯定早已有了自己的一套方法来封装这些重复的操作。但是,现在市面上已经有很多成熟的框架已经提供了这么一套封装的方法来极大地方便我们的工作,而且在浏览器兼容及效率上也各有深入的研究了,我们何不来看看这些解决方案是否好用,从来再次提高我们的工作效率呢?这些解决方案,有一个统一的命名:Javascript Selectors


Selectors长什么样

常用的Selectors

  • “#ElementId” ID为ElementId

  • “.ClassName” class包含ClassName

  • “TagName” Dom标签为TagName

  • “[AttributeName]” Dom包含属性AttributeName

  • “(expr1), (expr2)[, (expr3), ...]” 满足表达式1或表达式2或表达式3…

高级的Selectors

  • “:empty” 空或’/>’结尾的标签

  • “:first-child” 同类同级别第一个Dom

  • “:nth-child(odd)” 同类同级别奇数位Dom

  • “:nth-child(even)” 同类同级别偶数位Dom

  • “(PreExpr)>(NextExpr)” 直接子节点Dom

  • “(PreExpr)+(NextExpr)” 同级别紧挨着的Dom

  • “(PreExpr)~(NextExpr)” 同级别Dom

  • “[AttributeName=(Value)]” Dom包含属性AttributeName且等于Value

  • “[AttributeName^=(Value)]” Dom包含属性AttributeName且以Value开头

  • “[AttributeName$=(Value)]” Dom包含属性AttributeName且以Value结尾

表单中的Selectors

  • “:checked” 选中状态的表单控件

JS Selectors & CSS Selectors

两者在使用上并没有直接关系。但两者长得很像,并从不同的角度管理着HTML页面上的Dom节点。
JS Selectors通过JS原生的方法或者浏览器支持的方法,结合正则,筛选Dom。
CSS Selectors通过浏览器内置的渲染引擎筛选Dom。
两者最终得到的结果互不相干。

JS Selectors与框架

通俗地说,Selectors引擎是独立的,是作为JS框架的一个组件存在的。
目前有很多引擎,大多没有独立的名字,是跟随JS框架出现的(如YUI,Ext,Dojo)。
jQuery的引擎为Sizzle,目前效率最高的引擎之一。此外还有Peppy。
YUI 2.x的引擎效率惨不忍睹,3.x的效率有了脱胎换骨的优化,是亮点。

IE6下各大框架Selectors的执行效率

怎么用Selectors引擎

其实很简单:
JS Selectors引擎,用山寨的话来解释,那就是:一个返回类型是array的function,它必须包含一个string类型的Selector表达式参数,之后的可选参数等你用段日子再了解也不迟!

YAHOO.util.Selector.query

看到标题了吗?这就是YUI 2.x 中的Selectors引擎所在的命名空间(YAHOO.util.Selector)和方法名(query)。
来看看query这个方法的官方API:

Retrieves a set of nodes based on a given CSS selector.
Parameters:
selector The CSS Selector to test the node against.
root optional An id or HTMLElement to start the query from. Defaults to Selector.document.
firstOnly optional Whether or not to return only the first match.
Returns: Array
An array of nodes that match the given selector.
static Array query ( selector, root, firstOnly)

扩展思维

YUI 2.x 的Selectors引擎效率低,我们能否切换一个效率更高的引擎呢?答案是肯定的!YAHOO.util.Selector.query作为一个静态函数我们可以用更高的引擎来重写它,比如我们用Sizzle的引擎来替换它:

YAHOO.util.Selector.query=Sizzle;

当然我们也可用从YUI 3.x版本中剥离出高效的引擎来重写2.x中的引擎

 

0
投稿

猜你喜欢

  • 新年钟声刚过,淘宝新版首页全“心”上线了,这次设计大胆的将布局从 960px 伸展至 1000px,页面更通透,新首页更大范围的实践了 HT
  • 原理:建一个栈,每次碰到一个新标签,就与栈顶的标签配对,如果配对,栈顶的标签就出栈,如果不配对,这个新标签就进栈,最终,栈如果是空的,说明所
  • 前几天开始原来的google pr查询接口已经失效,导致很多站长工具pr查询功能不能使用原始pr查询接口:$string =&nb
  • 时下,个性ico图标却成为一些主流大牌网站提高用户体验(UE)的一个“时髦”玩法,那么,是如何在IE地址栏显示出网站的个性图标的呢?常浏览网
  • 目的:JS+ASP打造无刷新新闻列表,下图所示的新闻列表相信大家并不少见,包括新闻的分页功能,本文要介绍的就是各分页间的切换方式。传统的方法
  • 如何显示SQL数据库所有表的名称?<%strSQLDSN = "xxxx"strSQLUser
  • 由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对C
  • 用ASP生成XBM数字图片(可用来生成验证码)XBM图片是一个纯文本的文件,可以用ASP来自动生成。可以用它来使用网站登陆的验证码;我们用记
  • 具体代码如下:Function ASTCreateFtpSite(IPAddress, RootDirectory,&n
  • 桥接模式Bridge Pattern是什么桥接模式是一种结构型模式,它将抽象部分与实现部分分离开来,使它们可以独立地变化。在桥接模式中,我们
  • 阅读上一章:Chapter 9 精简标签Part 2: Simplebits Of Style  简短精悍的样式Chap
  • 一、ASP中处在双引号中的可以是任意的字符、字符串,HTML代码1.<%response.write ("I&nb
  • asp使用WScript.Shell获取电脑的网络配置信息Option Explicit Dim WSHShe
  • 一、怎么样取得最新版本的MySQL?要安装MySQL,首先要当然要取得它的最新版本,虽然大家都知道在FreeBSD的Packages中可以找
  • 一、利用ASP和ADO实现数据库操作的工作流程ASP内嵌了五个对象Resquest、Response、Server、Seesion、Appl
  • 最近看到大家都练习写树,偶也学习学习写了一个,大家多多批评,我好进步。不过我看了一些树的xml文档都是在xml中就已经有了树的结构,所以我写
  • 引子编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。数据天生就是文静的
  • 第一类人,用户体验无所不能。第二类人,用户体验无所不包括。第三类人,用户体验只是指导思想。用户研究通常是做创新的工作,也就注定只少数有财力、
  • 上传问题可以说是网络编程中经常遇到的,也是一个很重要的问题,我们不仅要实现上传文件,图片等基本功能,还有考虑到上传程序的安全性,本文介绍了一
  • 导言(Introduction)这个提案描述了如何在jQuery的核心库中增加模板支持。更为特别是,这个提案描述了一个新的jQuery方法-
手机版 网络编程 asp之家 www.aspxhome.com