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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
微信小程序picker组件下拉框选择input输入框的实例
Sep 20 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
Oct 31 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
jquery使用echarts实现有向图可视化功能示例
Nov 25 jQuery
webpack5 联邦模块介绍详解
Jul 08 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
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中文验证码实现示例分享
2014/01/12 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
python使用列表的最佳方案
2020/08/12 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
计算机专业学生的自我评价
2013/12/15 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
投资合作协议书范本
2014/04/17 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
企业投资意向书
2015/05/09 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android