jQuery入门第一课 jQuery选择符


Posted in Javascript onMarch 14, 2010

选择符可以认为是一个增强版的getElementById方法。getElementById方法返回的是一个HTML元素,jQuery选择符返回的是HTML元素的一个包装。利用这个包装集,jQuery赋予了HTML元素更多的可以操作的方法。在JQuery中,处于核心地位的一个函数就是$。对,它就是一个函数,名字有点古怪。这个函数就是选择函数,其一般用法是

var obj=$(selector);

其中selector是一个字符串,就是下面要着重介绍的选择符。返回的是元素的包装集合。事实上,JQuery的核心$函数的威力远不止当作选择符来用,当它的参数是一个函数的时候,它的作用是类似onload事件,当页面的DOM元素完全加载后,它参数内的方法就会被执行。它比onload更有优势,onload只能注册1个函数,但是它可以多次被调用,也就是可以注册多个函数到DOM加载完全后执行,而且onload是要等页面上的所有内容都加载完毕后再执行的,如果有大图片等内容,可能造成函数执行延时。而$函数只要DOM结构完全加载就可以执行。下面看一个简单的例子:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>JQuery First Page</title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript"> 
$(function(){ 
var p=$('#p1'); 
alert(p); 
}); 
</script> 
</head> 
<body> 
<p id="p1">I'm a p</p> 
</body> 
</html>

可以看到,最简单的选择器就是和getElementById类似的,利用元素的ID作为选择符。可以看看p到底是什么,利用js调试器可以看到:

jQuery入门第一课 jQuery选择符

p是一个类似数组的对象,里面包含了被选中的元素。打开[Methods]结点可以看到很多方法,都是jQuery提供的方法。在这个例子中,元素只有一个,因此通过p[0]就能获得该HTML元素,p[0]就是和getElementById获得的对象是一样的。

jQuery选择符的强大之处在于它几乎完全兼容CSS2的选择符,而不管你的浏览器是否兼容CSS2。如果对CSS选择符还不熟悉的,请参考我的上一篇日志:CSS选择符。对于选择到的元素,可以给他施加很多方法,这些方法不是本文介绍的重点,这里先介绍一个,就是css(attr,value)方法,这个方法可以给包装元素的css属性中的attr属性的值设置为value.下面举的例子就是利用这个方法给页面元素增加一点字体上的变化,我们可以以此区分出某个选择符到底选中了哪些元素。这个例子和我上一篇的例子的内容几乎是一样的,我就不加解释了,只是这篇的例子也都适用于IE6!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>JQuery Selector</title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
$(function(){ 
$("h1,h2").css("color","Red"); //element selector 
$(".warning").css("font-style","italic"); //class selecotr 
$("p.warning").css("color","Red"); 
$("p.big.warning").css("font-size","x-large");//multi-class selector 
$("*[id]").css("color","red"); //attribute selector 
$("p[class]").css("color","blue"); 
$("p[class][id]").css("font-size","x-large"); 
$("div[title='title']").css("font-weight","bold"); 
$("div[title^='title']").css("color","red"); 
$("div[title$='World']").css("color","blue"); 
$("div[title~='Hello']").css("font-size","x-large"); 
$("div[title*='Hello']").css("font-style","italic"); 
$("div[title|='Hello']").css("background-color","silver"); 
$("p .warning").css("font-size","x-large"); //decendent selector 
$("body > .warning").css("border","1px solid"); //child selector 
}); 
</script> 
</head> 
<body> 
<h1> 
This is H1</h1> 
<h2> 
This is H2</h2> 
<h3> 
This is H3</h3> 
<p class="warning"> 
Real Warning!</p> 
<span class="warning">Common Worning</span> 
<p class="big warning "> 
Warning and Big</p> 
<div id="title"> 
I am title</div> 
<p class="warning"> 
Real Warning!</p> 
<p id="idp1" class="myclass"> 
P with an ID and class</p> 
<p> 
The last line.</p> 
<p id="idp2"> 
P with an ID</p> 
<div title="title" >I am title</div> 
<div title="title2">I am title2</div> 
<div title="Hello World">Hello World</div> 
<div title="HelloWorld">HelloWorld</div> 
<div title="Hello-World">Hello-World</div> 
<p><span class="warning">Class warning inside p</span></p> 
</body> 
</html>

效果如下:
jQuery入门第一课 jQuery选择符 

jQuery的强大之处还不限于此,除了支持CSS选择符以外,jQuery自身还支持其他的选择符,其中一大类就是基于位置的选择符。例如选择列表中的第一个,或者表格中的偶数行等等。这类选择器的一般形式是 :location,例如 a:first,匹配页面上第一个a, p:even 匹配页面上偶数个p.下面详细介绍。

选择器 描述
:first 页面最先出现的。li a:first 在li标签下第一个出现的a
:last 同上,最后出现的。
:first-child 最先的子元素
:last-child 最后的子元素
:nth-child(n) 返回第n个子元素(从1开始)
:nth-child(even|odd) 返回第偶数|奇数个子元素
:even :odd 第偶数、奇数个元素
:eq(n) :gt(n) :lt(n) 返回第n个元素(从0开始),第n个元素之后元素,第n个元素之前的元素

先看一个例子再作解释:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Custom Selector</title> 
<style type="text/css"> 
table 
{ 
border-collapse: collapse; 
font-family:Verdana; 
} 
td 
{ 
padding-left: 10px; 
padding-right: 10px; 
border: solid 1px black; 
} 
</style> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
$(function(){ 
$('tr:first').css({fontWeight:'bold',fontSize:'large'}); 
$('tr:even').css('background-color','silver'); 
$('tr td:first').css('color','red'); 
$('tr:gt(0) :first-child').css('font-style','italic'); 
$('p:eq(0)').css({fontFamily:'Arial',fontSize:'x-large'}); 
}); 
</script> 
</head> 
<body> 
<p>Entry Level DSLR Prices</p> 
<table> 
<tr> 
<td>Company</td> 
<td>Model</td> 
<td>Price</td> 
</tr> 
<tr> 
<td>Canon</td> 
<td>1000D</td> 
<td>3800</td> 
</tr> 
<tr> 
<td>Canon</td> 
<td>450D</td> 
<td>4100</td> 
</tr> 
<tr> 
<td>Canon</td> 
<td>500D</td> 
<td>4900</td> 
</tr> 
<tr> 
<td>Canon</td> 
<td>550D</td> 
<td>6100</td> 
</tr> 
<tr> 
<td>Nikon</td> 
<td>D3000</td> 
<td>3600</td> 
</tr> 
<tr> 
<td>Nikon</td> 
<td>D5000</td> 
<td>4600</td> 
</tr> 
<tr> 
<td>Pentax</td> 
<td>Kx</td> 
<td>3900</td> 
</tr> 
<tr> 
<td>Sony</td> 
<td>a230</td> 
<td>2900</td> 
</tr> 
<tr> 
<td>Sony</td> 
<td>a450</td> 
<td>4400</td> 
</tr> 
</table> 
<p>Date: 2010-03</p> 
</body> 
</html>

第一条语句是将第一行设置为粗体,大号字。第二句是将偶数行的背景设置为银灰色。第三句是将tr中的td元素的第一个设置成红色。第四句是将第二行开始所有tr的第一个子元素设置成斜体。

第四条展示了选择器的组合使用。 这一类的选择器和CSS选择器类似,也可以组合使用。 要特别注意 p:first 和 p :first的区别,前者表示的是在整个页面中第一个p,后者表示的是包含在p中的第一个元素。综合上面的解释,最终的结果应该是:

jQuery入门第一课 jQuery选择符

题外话,上面这个图是在IE8下截的,不得不说IE对于字体的渲染真是赏心悦目啊。Chrome FF都没这么漂亮。

言归正传,继续介绍jQuery的最后一类选择器。这类选择器很像css的伪类,例如:

:button 选择input[type=button]
:checked 选中的复选框或按钮
:contains('xxx') 包含字符串xxx的元素

具体用法比较简单,不详细介绍。

Javascript 相关文章推荐
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
原生js实现给指定元素的后面追加内容
Apr 10 Javascript
jquery.post用法之type设置问题
Feb 24 Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 Javascript
Vue的MVVM实现方法
Aug 16 Javascript
vue proxyTable 接口跨域请求调试的示例
Sep 12 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
Jul 22 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
Sep 03 Javascript
通过Kettle自定义jar包供javascript使用
Jan 29 Javascript
使用JavaScript switch case 另类写法
Mar 14 #Javascript
两个JavaScript jsFiddle JSBin在线调试器
Mar 14 #Javascript
input的focus方法使用
Mar 13 #Javascript
JavaScript prototype对象的属性说明
Mar 13 #Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
Mar 12 #Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 #Javascript
javascript offsetX与layerX区别
Mar 12 #Javascript
You might like
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
discuz目录文件资料汇总
2014/12/30 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Python爬取成语接龙类网站
2018/10/19 Python
django表单的Widgets使用详解
2019/07/22 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Python关于反射的实例代码分享
2020/02/20 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
安全大检查反思材料
2014/01/31 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
一文简单了解MySQL前缀索引
2022/04/03 MySQL