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 相关文章推荐
js鼠标左右键 键盘值小结
Jun 11 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
JS实现alert中显示换行的方法
Dec 17 Javascript
JavaScript中关联原型链属性特性
Feb 13 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
Vue.js实现大屏数字滚动翻转效果
Nov 29 Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 Javascript
JS+CSS实现过渡特效
Jan 02 Javascript
详解基于element的区间选择组件校验(交易金额)
Jan 07 Javascript
vue-cli4.5.x快速搭建项目
May 30 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
用缓存实现静态页面的测试
2006/12/06 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python子类继承父类构造函数详解
2019/02/19 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
MySQL面试题
2014/01/12 面试题
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
青奥会口号
2014/06/12 职场文书
2014年度党员自我评议
2014/09/13 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书