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 ...
随机推荐
- ora-28001:口令失效
Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录. Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个 ...
- TortoiseGit日常使用指南
本文在介绍了软件安装和设置后, 写了TortoiseGit 常用的一些功能, 包括:创建新库添加文件及文件夹创建分支看分支情况及修改log比较版本差异合并分支其他操作: Stash; 忽略文件本文不包 ...
- 关于SQL中的Update语句
今天在SQL数据库操作时需要将一张表中的数据Update到另一张表中去, 可是用我以往的写法确怎么也不能成功.代码如下: update table1 a set a.Col1=b.Col2 from ...
- Web API-如何将Controller的返回值转换成HTTP response消息
https://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization https://co ...
- flash player 版本对照
- codeforce 606B Testing Robots
题意:给定一个x*y的矩形,和一个机器人的初始位置(x0,y0).以向下为x轴正方向,向右为y轴正方向.现在要对这个机器人进行多次测试.每次测 试,会在矩形的某个位置有一个矿井.所以一共要进行x*y次 ...
- Magento 多语言
一: 1>进入后台选择如下: 2> 显示页面如下: 输入后台登陆的用户名和密码. 3>然后去Magento官网搜索一下 Magento Official Chinese Transl ...
- 3.1 全局存储带宽与合并访问 -- Global Memory(DRAM) bandwidth and memory coalesce
全局存储带宽(DRAM) 全局内存是动态随机访问的方式访问内存.我们希望访问DRAM的时候非常快,实际情况是DRAM中出来的数据非常非常慢,这就好比,理想状态是泄洪,水倾巢而出,气势宏伟,实际取水却像 ...
- Javascript and DOM学习
1.输出 document.write.(); 2.alert警告 3.confirm消息对话框:当用户点击"确定"按钮时,返回true,取消时,返回false 4.prompt提 ...
- Android开发--ListPreferance 运行报错:android.preference.ListPreference.findIndexOfValue(ListPreference.java:169)
在Stack Overflow上找到的答案:http://stackoverflow.com/questions/4357094/exception-on-listpreferences “i fix ...