JavaScript/jQuery选择器简介
DOM提供的选择器
选择器是帮助我们选择页面元素的工具,在网站制作中常常会涉及到某个元素的改变,通过选择器提取这些元素可以很轻易的实现(DOM术语把所说的“元素”称作是“节点”)。JavaScript的选择器主要是由DOM(文档对象模型,Document Object Model)提供的两种主要的方法实现的,即document.getElementById()和document.getElementsByTagName()。遗憾的是,这两个方法都没有提供做出更细致的选择所需的控制。
下面就这两种方式做一个简要的说明:
① document.getElementById()
即通过ID获取一个元素,这意味着找到一个节点,而这个节点使用了一个唯一的ID。例如,假设我们在网页中定义了这样的一个标题:
<h1 id=head>页面元素选择器</h1>
那么我们通过document.getElementById()来抓取这个节点的方式就是
document.getElementById(’head’)
这行代码的含义是“查找页面上ID为’head’的一个标签”。通过这样一个选择,我们就可以在自己的JavaScript的代码中对这个标签进行改动了(由于document.getElementById()语句过长,因此通常把这个语句赋给一个变量,然后对这个变量进行操作)
varlookFor=document.getElementById(’head’)
② document.getElementsByTagName()
即通过TagName抓取节点,这意味着我们要获取一个元素的列表。有时候我们想要更多的元素,而不是document.getElementById()所提供的一个单个元素。例如,我们需要获取页面上所有指向站点外部的链接,迫使这些链接以新窗口的方式打开。那么,我们通过document.getElementsByTagName(’a’)这个方式一下子就可以抓取这些元素了。在这种情况下,document.getElementsByTagName()是将页面上指定的标签以数组的方式列出来。
友情提示:document.getElementById()与document.getElementsByTagName()在写法上的不同。
选择临近的节点
DOM除了以上两种方式抓取节点以外还提供了另外的几种方法来访问附近的节点。DOM把标签包含其他标签看作是一种关系,但是DOM只提供对“直接亲属”的访问。也就是说,DOM可以访问一个节点的“父亲”节点、“孩子”节点和“兄弟”节点(此处的关系可以与数据结构中的树的关系比作)。
如右图所示,以strong为例
父亲节点:p
兄弟节点:some ,text
孩子节点:important
P的孩子节点为:some,strong,text
下面我们来说明DOM提供的几种方法:
.childNodes
抓取当前节点的直接孩子的所有节点列表
var headline = document.getElementById(‘p’);
varheadlineKids = headline.childNodes;
那么headlineKids所表示的就是some,strong和text。
.parentNode
抓取当前节点的直接父亲节点
var headline = document.getElementById(‘strong’);
varheadlineParent=headline.parentNode;
那么headlineParent所表示的就是p。
.nextSibling和.previousSibling
抓取当前节点之后的节点和抓取当前节点之前的节点
var headline=document.getElementById(‘strong’);
varheadlineNext=headline.nextSibling;
varheadlinePrevious=headline.previousSibling;
那么headlineNext就表示text;headlinePrevious就表示 some。
总的来说DOM所提供的(就是JavaScript可以直接引用的)页面元素选择的方法就是以上几个。如下:
jQuery提供的选择器
jQuery为我们提供了更加丰富的选择器,是我们可以更加灵活的选择页面元素。在这里会列举一些主要的选择器(想要查看jQuery所有的选择器列表,你可以访问jQuery网站说明:http://docs.jquery.com/Selectors)
|
选择器分类 |
选择器名称 |
|
基本选择器 |
ID选择器 |
|
元素选择器 |
|
|
类选择器 |
|
|
高级选择器 |
子孙选择器 |
|
孩子选择器 |
|
|
相邻兄弟选择器 |
|
|
属性选择器 |
|
属性选择器 |
指定特定属性元素 |
|
匹配一个属性拥有一个具体值 |
|
|
匹配一个属性以一个特定值开始的元素 |
|
|
匹配一个属性以一个特定值结束的元素 |
|
|
匹配一个属性中任意位置包含了一个特定值的元素 |
基本选择器
ID选择器
使用jQuery和一个CSS ID选择器来选择应用一个ID的任何页面元素。假设我们在一个页面中有如下的一行代码:
<p id=”headtext”>welcome to our school</p>
DOM选择方法:
varheadtext = document.getElementById(‘headtext’);
jQuery选择方法:
varheadtext=$(‘#headtext’);
注:jQuery在单引号里面用 #+id 来引用。
元素选择器
jQuery直接把标签名字传递过来就可以抓取了。仍然以上面的例子来看
DOM选择方法:
varheadtext = document.getElementsByTagName(‘p’);
jQuery选择方法:
varheadtext=$(‘p’);
注:jQuery在单引号里面直接引用标签名。
类选择器
DOM没有任何内建的方法来找到具有一个特定CSS属性的元素。jQuery可以在页面中抓取具有同一个类属性的标签。假设我们在一个网页的页面中添加了一个表格CSS样式.td_top。在网页多个地方有类似以下的代码:
<td class=td_top> something </td>
如果我们要选择以上带有td_top样式的单元格,我们就可以采用以下的方式选择:
$(‘.td_top’)
注:采用CSS选择器方法,在单引号里面用 .+class 来引用。
高级选择器
子孙选择器
这个方法提供了一种方式来找到一个标签中的另一个标签。假设我们有以下的一段无序列表代码:
<ul id=”navBar”><a href=”#”>这是一个例子</ul>
<ul id=”navBar1”><a href=”#”>这是一个例子</ul>
<ul id=”navBar2”><a href=”#”>这是一个例子</ul>
<ul id=”navBar3”><a href=”#”>这是一个例子</ul>
<ul id=”navBar4”><a href=”#”>这是一个例子</ul>
如果我们要选取第二行代码中的<a>标签,我们就可以采用这种方法:
$(‘#navBar1 a’)
即在单引号里面用一个选择器+空格+另一个选择器来引用
孩子选择器
以右图为例,some,strong和text是p的孩子,而important不是p的孩子,同样,important是strong的孩子。于是如果我们要选择strong可以使用下面的方法:
$(‘p > strong’)
注:首先列出父亲元素,然后是一个> ,然后是孩子元素。
相邻兄弟选择器
仍然以右图为例,我们要选择strong后面的text属性,我们可以采用下面的方法:
$(‘strong + text’)
注:即在两个选择器之间加上一个加号就行了。
属性选择器
匹配一个属性拥有一个具体值
假设我们要在页面中选择出带链接的<a>标签(以形式:<a href=””></a>出现),方法如下:
$(a[href])
在标签选择器的后面加上属性即可。
如需要匹配具体值的话,只要在后面的属性上加上 = 那个值就行了
$(‘a[href=http://www.baidu.com]’)
这样就会寻找那些链接到http://www.baidu.com上的<a>标签
匹配一个属性以一个特定值开始的元素
假设我们要找到页面上所有<a>标签,并且在href后面以http://开头的属性。方法是[attribute^=value],这样就可以找出attribute后面以value为开始值的属性,而那些href后面不是以value开头的就不会被抓取。
$(‘a[href^=http://]’)
这行代码表示抓取页面上所有<a>标签,并且在href后面以http://开头的属性。
匹配一个属性以一个特定值结束的元素
这里的抓取方式与上面一个类似,不同点在于把上面的^换成$。
$(‘a[href$=.pdf]’)
这行代码表示抓取href后面以.pdf结尾的标签(实际上就是找出所有页面上连接大pdf的链接)。
匹配一个属性中任意位置包含了一个特定值的元素
这个选择器与上面两个也是类似的,只是把^换成*就可以了。不过它所代表的意义是指属性中的任意位置包含了一个特定值。例如:
$(‘a[href*=baidu.com]’)
这个语句就表示找出所有href后面包含baidu.com的链接。因此,上面的语句可以再页面上找出指向http://www.baidu.com,http://baidu.com,http://zhidao.baidu.com等等链接。
以上就是个人总结并参考《JavaScript:The Missing Manual》中文版内容所得,错误之处,欢迎指正。lanlan723820@126.com
JavaScript/jQuery选择器简介的更多相关文章
- [javascript]jquery选择器笔记
技术文档 中文:http://jquery.cuishifeng.cn/ 英文:http://api.jquery.com/category/selectors/ 分类 基本选择器 层次选择器 过滤选 ...
- 揭开jQuery的面纱-jQuery选择器简介(二)
选择器并没有一个固定的定义,在某种程度上说,jQuery的选择器和样式表中的选择器十分相似.选择器具有如下特点: 1.简化代码的编写 2.隐式迭代 3.无须判断对象是否存在 “$”是选择器不可缺少的部 ...
- 我人生中的jQuery选择器
Jquery选择器 一.Jquery选择器简介 JavaScript只是一种运行于客户端,可以被客户端浏览器解析的一段代码.它和java没有任何关系.JavaScript简称JS.jQuery是对JS ...
- jQuery简介以及jQuery选择器
一 简介 1 定义:jQuery库是JavaScript的封装库 2 优点: 1) : 代码开源 2) : 选择器强大 3) : 完善的Ajax 4) : 浏览器兼容性高 5) : 文档完善(帮助文档 ...
- jQuery 选择器和JavaScript 选择器的技巧与异常原因
jquery的选择器借鉴了css选择器,核心依然依靠JavaScript的getElementById()和getElementsByTagName()方法,但是他封装了2个方法,让jquery选择器 ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- JavaScript(15)jQuery 选择器
jQuery 选择器 选择器同意对元素组或单个元素进行操作. jQuery 元素选择器和属性选择器同意通过标签名.属性名或内容对 HTML 元素进行选择. 在 HTML DOM 术语中:选择器同意对 ...
- jQuery选择器实现隔行变色和使用javaScript实现隔行变色
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <!--什么是选择器? jQuery选择器继承了 ...
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
随机推荐
- 理解ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...
- 【转】Cocos2d-x 弹出对话框的设计与实现
转自:http://www.tairan.com/archives/4854 我们时常需要这么些功能,弹出一个层,给与用户一些提示,这也是一种模态窗口,在没有对当前对话框进行确认的时候,不能继续往下操 ...
- [转]javascript console 函数详解 js开发调试的利器
javascript console 函数详解 js开发调试的利器 分步阅读 Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象,使用该 ...
- MSP430单片机输入与输出
MSP430单片机的输入输出线绝大多数是服用的,除了个别的端口外,基本上是8为为一组,不同的型号的MSP430的端口有所不同,就msp430F5438而言,一共有11个I/O端口,其中除了第十一P11 ...
- IOS学习笔记1`
写了IOS的Hello World,记事本写的.除了一些基本的语法外,最主要的收获就是路径问题了. 直接把文件拖入终端,就会显示文件的完全限定名了.
- C/C++:原码、反码和补码
正数的原码.反码和补码是一模一样的. 负数的反码的符号位跟原码一样,但其余各位取反. 负数的补码是其反码的最末位加1得到,即原码取反加1. 补码的补码就是原码. 浮点数的存储格式随着机器的 ...
- 将Magento后台汉化的方法
方法一: 打开/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php文件, 找到几个用来显示的代码,替换成 ...
- 稀疏表示(sparse representation)和字典学习
近十几年来,稀疏(sparsity)已经成为信号处理及其应用领域中处于第一位的概念之一.近来,研究人员又致力于过完备(overcomplete)信号表示的研究.这种表示不同于许多传统的表示.因为它能提 ...
- Ngrok,一款可以帮助你展示网站和联网开发的工具
使用Ngrok的目的就是为了可以让别人通过网络访问到自己本机上的项目 下面是一个简单的使用教程,详细的查看官网英文文档. 第一步: 登录官网:https://ngrok.com/ 注册或者登录 ...
- Java语言速览:StackOverflow
关于 java Java(请不要与 JavaScript 搞混)是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言.一般将安装了相关工具可以开发并运行 Java 程序的电脑系统称为 ...