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 相关文章推荐
使用onbeforeunload属性后的副作用
Mar 08 Javascript
javascript学习笔记(十) js对象 继承
Jun 19 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
vue.js指令v-model实现方法
Dec 05 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
在Vue项目中使用d3.js的实例代码
May 01 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
Aug 19 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
Vue 实现前进刷新后退不刷新的效果
Jun 14 Javascript
Weex开发之地图篇的具体使用
Oct 16 Javascript
JavaScript实现HSL拾色器
May 21 Javascript
js实现纯前端压缩图片
Nov 16 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
杏林同学录(九)
2006/10/09 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
destoon官方标签大全
2014/06/20 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
让焦点自动跳转
2006/07/01 Javascript
JavaScript delete操作符应用实例
2009/01/13 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
Js控制滑轮左右滑动实例
2015/02/13 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
python修改字典内key对应值的方法
2015/07/11 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
介绍一下linux的文件权限
2012/02/15 面试题
如何写一封打动人心的求职信
2014/02/17 职场文书
地震捐款倡议书
2014/08/29 职场文书
工作能力自我评价2015
2015/03/05 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
英语导游欢迎词
2015/09/30 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python