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 相关文章推荐
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
前端jquery部分很精彩
May 03 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
jquery表单验证插件validation使用方法详解
Jan 20 Javascript
详解Vue方法与事件
Mar 09 Javascript
详解AngularJS ui-sref的简单使用
Apr 24 Javascript
Node.js实现发送邮件功能
Nov 06 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
JS中利用FileReader实现上传图片前本地预览功能
Mar 02 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
js键盘事件实现人物的行走
Jan 17 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+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
Python实现堆排序的方法详解
2016/05/03 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Django 大文件下载实现过程解析
2019/08/01 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
python 两个数据库postgresql对比
2019/10/21 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
学习十八大的心得体会
2014/09/01 职场文书
银行贷款收入证明
2014/10/17 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Python实现天气查询软件
2021/06/07 Python
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android