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使用查询手册
Mar 07 Javascript
网上抓的一个特效
May 11 Javascript
js格式化金额可选是否带千分位以及保留精度
Jan 28 Javascript
在JavaScript中使用NaN值的方法
Jun 05 Javascript
JQuery中ajax方法访问web服务实例
Jul 18 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
Jun 01 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
Mar 28 Javascript
vue生命周期的探索
Apr 03 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
Sep 18 Javascript
微信小程序开发摇一摇功能
Nov 22 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
php 使用post,get的一种简洁方式
2010/04/25 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
php判断linux下程序问题实例
2015/07/09 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
javascript操作数组详解
2014/12/17 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
python暴力解压rar加密文件过程详解
2019/07/05 Python
python多进程使用函数封装实例
2020/05/02 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
党员学习十八大感想
2014/01/17 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
运动会闭幕词
2015/01/28 职场文书
业务内勤岗位职责
2015/04/13 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技