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 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
浅谈关于JavaScript API设计的一些建议和准则
Jun 24 Javascript
AngularJS过滤器详解及示例代码
Aug 16 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
Oct 10 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
微信小程序授权获取用户详细信息openid的实例详解
Sep 20 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 Javascript
vue项目出现页面空白的解决方案
Oct 31 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
常用jQuery代码分享
2015/07/14 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
python实现扫雷小游戏
2020/04/24 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
建筑结构施工专业推荐信
2014/02/21 职场文书
企业理念标语
2014/06/09 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书