JQuery学习笔记 nt-child的使用 - Web前端
作者:98wpeu发布时间:2026-06-20分类:网页前端技术浏览:3
导读:在使用JQuery的时候如果你想寻找某个容器(诸如div或者是table中的某些子元素),那么很容易就使用find方法。find将使用迭代的方式寻找所有符合条件的子元素,并且可以统...
在使用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>。从而可以设置样式了。
比如有这样一个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>。从而可以设置样式了。
相关推荐
- jquery 学习之一 对象访问 - Web前端
- 基于jQuery的左右滚动实现代码 - Web前端
- 突发奇想的一个jquery插件 - Web前端
- jQuery 表单验证扩展(三) - Web前端
- JQuery UI DatePicker中z-index默认为1的解决办法 - Web前端
- Jquery跨域获得Json时invalid label错误的解决办法 - Web前端
- jquery picswitch图片焦点图展示效果 - Web前端
- jQuery 表单验证扩展(三) - Web前端
- 使用jquery与图片美化checkbox和radio控件的代码(打包下载) - Web前端
- jQuery实现form表单reset按钮重置清空表单功能 - Web前端
- 网页前端技术排行
-
- 1【第六章】Foundation之按钮和下拉功能 - Web前端
- 2jQuery编写widget的一些技巧分享 - Web前端
- 3在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 4基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 5分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 6jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 7[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 8分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 9JS网页制作实例:标签云 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


