jQuery选择器(:nth-child(n))详解

来源:互联网 发布:znds网络电视论坛官网 编辑:程序博客网 时间:2024/05/22 07:51

原文地址:http://www.365mini.com/page/jquery-nth-child-selector.htm

jQuery的:nth-child(n)选择器用于匹配作为父元素下的第n个(或特定顺序的)子元素的元素,将其封装为jQuery对象并返回。

与该选择器相对的是:nth-last-child(n)选择器,用于匹配作为父元素下的倒数第n个(或符合特定倒数顺序的)子元素。

注意:nth-child(n)选择器与:eq(index)选择器的不同之处在于:
:eq(index)选择器只匹配一个元素,并且是所有匹配到的元素中的第index + 1个元素(索引index从0开始算起);
:nth-child(n)选择器则需要判断匹配到的元素是否是其父元素的第n个子元素或符合其他特定要求(序号n从1开始算起),如果是就保留,否则将被舍弃。

语法

jQuery1.1.4 新增该选择器。

// 这里的selector表示具体的选择器// 这里的n表示具体的序号或者符合要求的表达式jQuery( "selector:nth-child(n)" )

参数

参数描述selector一个有效的选择器。n指定的序号,从1开始计数。

参数n一般是一个自然数,表示作为父元素下的第n个子元素。例如::nth-child(2)表示作为父元素的第2个子元素。

参数n也可以为特定的表达式(表达式中只能使用字母n表示自然数,大小写均可)。例如:

  • :nth-child(odd)表示匹配作为父元素的奇数(第1、3、5、7……个)子元素的元素;
  • :nth-child(even)表示匹配作为父元素的偶数(第2、4、6、8……个)子元素的元素;
  • :nth-child(3n)表示匹配作为父元素的第3n个子元素的元素(n表示包括0在内的自然数,下同);
  • :nth-child(3n+1)表示匹配作为父元素的第3n+1个子元素的元素;
  • :nth-child(3n+2)表示匹配作为父元素的第3n+2个子元素的元素;

返回值

返回封装了匹配到的元素的jQuery对象。

如果找不到任何相应的匹配,则返回一个空的jQuery对象。

jQuery先会根据选择器selector去查找所有匹配的元素,再看它们是否是父元素的符合指定顺序的子元素,如果是就保留,否则舍弃掉该元素。

示例&说明

以下面这段HTML代码为例:

<div id="n1">    <div id="n2">        <ul id="n3">            <li id="n4" class="c">item1</li>            <li id="n5">item2</li>            <li id="n6" class="c">item3</li>        </ul>    </div>    <div id="n7">        <ul id="n8">            <li id="n9">item1</li>            <li id="n10">item2</li>        </ul>    </div></div>

现在,我们想要为每个ul标签内查找它的第2个li标签,则可以编写如下jQuery代码:

// 选择了id分别为n5、n10的两个元素$("ul li:nth-child(2)");

接着,为每个ul标签查找自然顺序为奇数的li标签,则可以编写如下jQuery代码:

// 选择了id分别为n4、n6、n9的3个元素$("ul li:nth-child(odd)");

为每个ul父标签查找自然顺序为3n的li标签,对应的jQuery代码如下:

// 选择了id为n6的一个元素// 虽然这里用的#n1进行限定,实际上jQuery先是通过查找所有匹配#n1 li的元素,然后再看这些元素是不是父元素的第3n个元素,如果是就保留,否则就舍弃掉。$("#n1 li:nth-child(3n)");

查找所有包含类名c的li标签,并且它们必须是父元素的偶数顺序的子元素,我们可以编写如下jQuery代码:

// 没有选择任何元素,返回空的jQuery对象// 虽然匹配li.c的有n4、n6两个元素,但它们都不是父元素的偶数顺序的子元素,因此无法匹配$("li.c:nth-child(even)");

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝发布宝贝怎么没知道品牌怎么办 淘宝提前确认收货了怎么办已经发货 苹果支付安全提示问题忘记了怎么办 没有在规定日期交首付款怎么办 淘宝申请退款又不想退了怎么办 淘宝申请退款后又不想退了怎么办 申请退款后如果不想退了怎么办 世纪明德申请退款但不想退了怎么办 天猫申请换货商家不换怎么办 乐视手机刷机不想清除数据怎么办 捡的苹果手机刷机了要id怎么办 苹果6plus玩王者荣耀卡怎么办 华为荣耀3c的手机内存不足怎么办 红米4x玩王者荣耀卡怎么办 华为手机荣耀10一直重启怎么办 荣耀9青春版老自动重启怎么办 手机开不开机停在华为界面怎么办 华为荣耀9老是反复的重启怎么办 华为荣耀4x老是反复的重启怎么办 手机更新系统后开不了机怎么办 荣耀畅玩7x没有4g网络怎么办 华为4x数字解锁不对中怎么办 华为手机需要解锁后才能刷机怎么办 畅玩6x锁屏壁纸黑了怎么办 指纹密码解锁的手机解不开了怎么办 客户说物流太慢了要退货怎么办 天猫买的手机商家不给发票怎么办 天猫超市下单付款后缺货怎么办 淘宝卖家填写假的单号不发货怎么办 天猫商家72小时未发货怎么办 天猫精灵方糖不按顺序播放怎么办 在天猫购物已付款不发货怎么办 淘宝退货商家收到货不退款怎么办 被有实名认证的闲鱼卖家骗了怎么办 我收到了方正的提示函怎么办 淘宝刷q币单被骗了怎么办 中通快递已签收但是东西丢了怎么办 手机不版本低不支持微信下载怎么办 淘宝虚拟商品不支持7天退货怎么办 卖虚拟物品遇到恶意退款买家怎么办 淘宝极速退款后卖家拒绝退款怎么办