JQuery学习笔记 nt-child的使用


Posted in Javascript onJanuary 17, 2011

在使用JQuery的时候如果你想寻找某个容器(诸如div或者是table中的某些子元素),那么很容易就使用find方法。find将使用迭代的方式寻找所有符合条件的子元素,并且可以统一、批量的设置css等内容。
比如有这样一个table:

<table id="outer"> 
<tr> 
<td> 
<table id="nested"> 
<tr> 
<td> 
内嵌Table,行1列1 
</td> 
<td> 
内嵌Table,行1列2 
</td> 
</tr> 
<tr> 
<td> 
内嵌Table,行2列1 
</td> 
<td> 
内嵌Table,行2列2 
</td> 
</tr> 
</table> 
</td> 
</tr> 
<tr> 
<td> 
第一个Table,行2列1 
</td> 
<td> 
第一个Table,行2列2 
</td> 
</tr> 
</table>

现在要求把所有的字体设置成蓝色,直接这样做即可。
$("table").css("color", "blue");
注意:$("table")表示页面上“每一个table“都这样设置。

下面看一个复杂的例子——
【把每个table的第二行第二列的字体设置成红色】

或许你可能为这样思考——因为$("table")表示“每一个table”,因此如果写成“$(table tr:eq(1) td:eq(1)).css("color","red");就可以大功告成(每一个table的第二行第二列)……
真的是这样吗?你如果运行一下结果,便大吃一惊——因为只有“内嵌Table,行1列1“变成了红色!这根本不是我们预期的结果。
为什么呢?道理很简单——因为JQuery如果通过空格分割html标签或者其它相关属性,意味着是从“父标签”中逐个寻找自标签,满足条件为止。结果就变成了“在父table中寻找所有的tr,找出满足条件的第二个tr,然后寻找第二个tr中的第一个td,并且染成红色!”

下面给出完整定义——
$("HTML标签,html子标签:eq(n) html子子标签:eq(n)……):从HTML标签(父)寻找满足条件的第n+1个子标签,然后在第n+1个子标签中寻找第n+1个子标签……直到全部遍历为止。
因此这种方法是错误的,初学者尤其容易犯哦。

那么应该怎么办呢?有人想到了这个方法——

$("table").each(function () { 
$(this).find("tr:eq(1) td:eq(1)").css("color", "red"); 
});

他的理由是:遍历每一个table,然后把每一个table的第二行第二列设置颜色。

相比第一个答案,第二个人似乎聪明了一点,他感悟到“table”父标签不会自行重复寻找(JQuery在前套标签的时候只会深度遍历最里边的那个标签,也就是蓝色定义的“……”那个无穷大的部分)。因此想到用each——诚然,each的确解决了深度遍历table的问题,但是第一个table的find依旧是按照蓝色部分思路执行(依旧寻找父table中第二个tr,第二个tr中的第二个td),所以find也是只有末尾HTML进行深度遍历。

此时我们只能使用这样的方法:
$("tr:nth-child(2) td:nth-child(2)").css("color", "red");

nth-child(n)是CSS伪类的一个方法,可以用于JQuery,这个代码的意思是:寻找离开第n个tr最近的容器元素,然后对自己进行设置。
这样一来,“tr:nth-child(2)”将分别对应两个<table>。从而可以设置样式了。

Javascript 相关文章推荐
javascript实现的鼠标链接提示效果生成器代码
Jun 28 Javascript
JavaScript Array扩展实现代码
Oct 14 Javascript
基于jQuery的弹出框插件
Mar 18 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
jQuery取id有.的值的方法
May 21 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
Feb 17 Javascript
初步使用bootstrap快速创建页面
Mar 03 Javascript
javascript基本数据类型和转换
Mar 17 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 #Javascript
基于jquery的返回顶部效果(兼容IE6)
Jan 17 #Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
Jan 17 #Javascript
Jquery知识点二 jquery下对数组的操作
Jan 15 #Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
Jan 15 #Javascript
JavaScript去掉数组中的重复元素
Jan 13 #Javascript
javascript基础知识大集锦(二) 推荐收藏
Jan 13 #Javascript
You might like
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
javascript 写类方式之四
2009/07/05 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
导致python中import错误的原因是什么
2020/07/01 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
什么是数组名
2012/05/10 面试题
优秀的毕业生的自我评价
2013/12/12 职场文书
实习单位接收函
2014/01/11 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
南湾猴岛导游词
2015/02/09 职场文书
大学生团员个人总结
2015/02/14 职场文书
婚前保证书范文
2015/02/28 职场文书
人事任命通知书
2015/04/21 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python