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 ...
随机推荐
- 建立自己的bin目录,在当前路径运行shell脚本
Shell脚本nusers cat nusers #! /bin/sh - who | wc -l 如果你要编写自己的脚本,最好准备自己的bin目录来存放它们,并且让Shell能够自动找到它们.这不难 ...
- Apache配置虚拟目录和多主机头
呃,相当古老的话题了,不过网上的资料实在是太坑爹,无奈只能自己动手做个备忘了...这里不提虚拟目录和主机头的区别了,不懂得童鞋去面壁思过吧 多个虚拟目录 首先把Apache安装到D:\Program ...
- VISUAL SVN安装 及客户端使用
1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...
- NopCommerce架构分析之一----依赖类生成容器
NopCommerce为了实现松耦合的框架设计目的,使用了IOC框架:Autofac.据有人测试,Autofac是性能好的IOC工具. 1.在IOC中,组件首先需要在IOC中注册,有通过配置文件注册的 ...
- HTTP DNS小结
https://www.dnspod.cn/httpdns/guide HttpDNS是使用HTTP协议向DNS服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端口进行请求,绕开了运 ...
- uvalive 4795 Paperweight
题意:给出一个5个顶点的多面体以及多面体内一点P.求让 多面体不同的方式(即以不同的面)放在地面上,设这个着地的面为A,多面体重心在A上的投影为B,在保证B在A内部且距离A的各个边界不小于0.2的前提 ...
- Discuz资料整理
1.截取字符串:messagecutstr(strip_tags($post['message']), 160);
- HDU-4631 Sad Love Story 平面最近点对
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4631 数据是随机的,没有极端数据,所以可以分段考虑,最小值是一个单调不增的函数,然后每次分治算平面最近 ...
- asp.net(C#) 中 怎么使用 MongoDb
1. 先引用以下Dll(如果找不到 到gethub上下载源代码自己编译 特别是MongoDB.Driver.Legacy.dll 我自己找了半天没找到): MongoDB.Bson.dll Mongo ...
- Socket的连接问题
case 10004: error = "Interrupted system call 中断的系统呼叫"; break; case 10009: error = "Ba ...