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 相关文章推荐
基于JQuery的密码强度验证代码
Mar 01 Javascript
jquery+json 通用三级联动下拉列表
Apr 19 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
jquery图形密码实现方法
Mar 11 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
jQuery超简单选项卡完整实例
Sep 26 Javascript
原生JS实现网络彩票投注效果
Sep 25 Javascript
利用jquery获取select下拉框的值
Nov 23 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
ES6 Generator基本使用方法示例
Jun 06 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静态变量当缓存的方法
2013/11/13 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
Javascript 编码约定(编码规范)
2018/03/11 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python多进程机制实例详解
2015/07/02 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
python的命名规则知识点总结
2019/10/04 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
天巡全球:Skyscanner Global
2017/06/20 全球购物
机械制造毕业生求职信
2014/03/03 职场文书
2014年保洁工作总结
2014/11/24 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL