• jQuery系列之选择器


    文章の目录


    原生 JS 获取元素方式很多,很杂,而且兼容性情况不一致,因此 jQuery 给我们做了封装,使获取元素统一标准。

    1、基础选择器

    1.1、ID选择器

    1.1.1、概述

    根据给定的ID匹配一个元素。

    使用任何的元字符作为名称的文本部分, 它必须被两个反斜杠转义\\

    1.1.2、语法

    $("#id")
    
    • 1
    1.1.2.1、参数
    • id:String 用于搜索的,通过元素的 id 属性中给定的值

    1.1.3、示例

    查找含有特殊字符的元素

    <span id="foo:bar"></span>
    <span id="foo[bar]"></span>
    <span id="foo.bar"></span>
    
    • 1
    • 2
    • 3
    $("#foo\\[bar\\]");
    
    • 1

    1.2、全选选择器

    1.2.1、概述

    匹配所有元素

    多用于结合上下文来搜索。

    1.2.2、语法

    $("*");
    
    • 1

    1.2.3、示例

    找到每一个元素

    <div>DIVdiv>
    <span>SPANspan>
    <p>Pp>
    
    • 1
    • 2
    • 3
    $("*");
    
    • 1

    1.3、类选择器

    1.3.1、概述

    根据给定的 css 类名匹配元素。

    1.3.2、语法

    $(".class");
    
    • 1
    1.3.2.1、参数
    • class:String 一个用以搜索的类。一个元素可以有多个类,只要有一个符合就能被匹配到。

    1.3.3、示例

    查找所有类是 “myClass” 的元素。

    <div class="notMe">div class="notMe"div>
    <div class="myClass">div class="myClass"div>
    <span class="myClass">span class="myClass"span>
    
    • 1
    • 2
    • 3
    $(".myClass");
    
    • 1

    1.4、标签选择器

    1.4.1、概述

    根据给定的元素标签名匹配所有元素

    1.4.2、语法

    $("element");
    
    • 1
    1.4.2.1、参数
    • element:String 一个用于搜索的元素。指向 DOM 节点的标签名。

    1.4.3、示例

    查找一个 DIV 元素。

    <div>DIV1div>
    <div>DIV2div>
    <span>SPANspan>
    
    • 1
    • 2
    • 3
    $("div");
    
    • 1

    1.5、并集选择器

    1.5.1、概述

    将每一个选择器匹配到的元素合并后一起返回。

    你可以指定任意多个选择器,并将匹配到的元素合并到一个结果内。

    1.5.2、语法

    $("selector1,selector2,selectorN");
    
    • 1
    1.5.2.1、残念书
    • selector1:String 一个有效的选择器
    • selector2:String 另一个有效的选择器
    • selectorN:String 任意多个有效选择器

    1.5.3、示例

    找到匹配任意一个类的元素。

    <div>divdiv>
    <p class="myClass">p class="myClass"p>
    <span>spanspan>
    <p class="notMyClass">p class="notMyClass"p>
    
    • 1
    • 2
    • 3
    • 4
    $("div,span");
    
    • 1

    1.6、交集选择器

    1.6.1、概述

    交集元素

    1.6.2、语法

    $("p.myClass");
    
    • 1

    1.6.3、示例

    <div>divdiv>
    <p class="myClass">p class="myClass"p>
    <span>spanspan>
    <p class="notMyClass">p class="notMyClass"p>
    
    • 1
    • 2
    • 3
    • 4
    $("p.myClass");
    
    • 1

    2、层级选择器

    层级选择器最常用的两个分别为:后代选择器和子代选择器。

    2.1、后代选择器

    2.1.1、概述

    在给定的祖先元素下匹配所有的后代元素

    2.1.2、语法

    $("ancestor descendant");
    
    • 1
    2.1.2.1、参数
    • ancestor:任何有效选择器
    • descendant:用以匹配元素的选择器,并且它是第一个选择器的后代元素

    2.1.3、示例

    找到表单中所有的 input 元素

    <form>
    	<label>Name:label>
    	<input name="name" />
    	<fieldset>
    		<label>Newsletter:label>
    		<input name="newsletter" />
    	fieldset>
    form>
    <input name="none" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    $("form input");
    
    • 1

    2.2、子代选择器

    2.2.1、概述

    在给定的父元素下匹配所有的子元素

    2.2.2、语法

    $("parent > child");
    
    • 1
    2.2.2.1、参数
    • parent:任何有效选择器
    • child:用以匹配元素的选择器,并且它是第一个选择器的子元素

    2.2.3、示例

    匹配表单中所有的子级input元素。

    <form>
    	<label>Name:label>
    	<input name="name" />
    	<fieldset>
    		<label>Newsletter:label>
    		<input name="newsletter" />
    	fieldset>
    form>
    <input name="none" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    $("form > input");
    
    • 1

    2.3、prev + next选择器

    2.3.1、概述

    匹配所有紧接在 prev 元素后的 next 元素

    2.3.2、语法

    $("prev + next");
    
    • 1
    2.3.2.1、参数
    • prev:任何有效选择器
    • next:一个有效选择器并且紧接着第一个选择器

    2.3.3、示例

    匹配所有跟在 label 后面的 input 元素

    <form>
    	<label>Name:label>
    	<input name="name" />
    	<fieldset>
    		<label>Newsletter:label>
    		<input name="newsletter" />
    	fieldset>
    form>
    <input name="none" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    $("label + input");
    
    • 1

    2.4、prev ~ siblings选择器

    2.4.1、概述

    匹配 prev 元素之后的所有 siblings 元素

    2.4.2、语法

    $("prev ~ siblings");
    
    • 1
    2.4.2.1、参数
    • prev:任何有效选择器
    • siblings:一个选择器,并且它作为第一个选择器的同辈

    2.4.3、示例

    找到所有与表单同辈的 input 元素

    <form>
    	<label>Name:label>
    	<input name="name" />
    	<fieldset>
    		<label>Newsletter:label>
    		<input name="newsletter" />
    	fieldset>
    form>
    <input name="none" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    $("form ~ input");
    
    • 1

    3、基本筛选选择器

    3.1、:first

    3.1.1、概述

    获取第一个元素

    3.1.2、语法

    $("element:first");
    
    • 1

    3.1.3、示例

    获取匹配的第一个元素

    <ul>
    	<li>list item 1li>
    	<li>list item 2li>
    	<li>list item 3li>
    	<li>list item 4li>
    	<li>list item 5li>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    $("li:first");
    
    • 1

    3.2、:not(selector)

    3.2.1、概述

    去除所有与给定选择器匹配的元素

    3.2.2、语法

    $("element:not(selector)");
    
    • 1
    3.2.2.1、参数
    • selector:用于筛选的选择器

    3.2.3、示例

    查找所有未选中的 input 元素

    <input name="apple" />
    <input name="flower" checked="checked" />
    
    • 1
    • 2
    $("input:not(:checked)");
    
    • 1

    3.3、:even

    3.3.1、概述

    匹配所有索引值为偶数的元素,从 0 开始计数

    3.3.2、语法

    $("element:even")
    
    • 1

    3.3.3、示例

    查找表格的1、3、5…行(即索引值0、2、4…)

    <table>
    	<tr>
    		<td>Header 1td>
    	tr>
    	<tr>
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    $("tr:even");
    
    • 1

    3.4、:odd

    3.4.1、概述

    匹配所有索引值为奇数的元素,从 0 开始计数

    3.4.2、语法

    $("element:odd")
    
    • 1

    3.4.3、示例

    查找表格的2、4、6行(即索引值1、3、5…)

    <table>
    	<tr>
    		<td>Header 1td>
    	tr>
    	<tr>
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    $("tr:odd");
    
    • 1

    3.5、:eq(index)

    3.5.1、概述

    匹配一个给定索引值的元素

    3.5.2、语法

    $("element:eq(index)")
    
    • 1
    3.5.2.1、参数
    • index:Number 从 0 开始计数

    3.5.3、示例

    查找第二行

    <table>
    	<tr>
    		<td>Header 1td>
    	tr>
    	<tr>
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    $("tr:eq(1)");
    
    • 1

    3.6、:gt(index)

    3.6.1、概述

    匹配所有大于给定索引值的元素

    3.6.2、语法

    $("element:gt(index)")
    
    • 1
    3.6.2.1、参数
    • index:Number 从 0 开始计数

    3.6.3、示例

    查找第二第三行,即索引值是1和2,也就是比0大

    <table>
    	<tr>
    		<td>Header 1td>
    	tr>
    	<tr>
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    $("tr:gt(0)");
    
    • 1

    3.7、:lang(language)

    3.7.1、概述

    选择指定语言的所有元素。

    :lang 选择器,匹配有一个语言值等于所提供的语言代码,或以提供的语言代码开始,后面马上跟一个“ - ”的元素。例如,选择器$("div:lang(en)")将匹配

    and
    (和他们的后代
    ),但不包括

    对于HTML元素,语言值由lang属性决定,也可能由来自meta元素或HTTP头信息决定。

    3.7.2、语法

    $("element:lang(language)");
    
    • 1
    3.7.2.1、参数
    • language:语言代码

    3.7.3、示例

    选择所有

    的语言属性:

    $("p:lang(it)");
    
    • 1

    3.8、:last()

    3.8.1、概述

    获取最后个元素

    3.8.2、语法

    $("element:last");
    
    • 1

    3.8.3、示例

    获取匹配的最后个元素

    <ul>
    	<li>list item 1li>
    	<li>list item 2li>
    	<li>list item 3li>
    	<li>list item 4li>
    	<li>list item 5li>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    $("li:last");
    
    • 1

    3.9、:lt(index)

    3.9.1、概述

    匹配所有小于给定索引值的元素

    3.9.2、语法

    $("element:lt(index)");
    
    • 1
    3.9.2.1、参数
    • index:Number 从 0 开始计数

    3.9.3、示例

    查找第一第二行,即索引值是 0 和 1,也就是比 2 小

    <table>
    	<tr>
    		<td>Header 1td>
    	tr>
    	<tr>
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    $("tr:lt(2)");
    
    • 1

    3.10、:header

    3.10.1、概述

    匹配如 h1,h2,h3 之类的标题元素

    3.10.2、语法

    $(":header");
    
    • 1

    3.10.3、示例

    给页面内所有标题加上背景色

    <h1>Header 1h1>
    <p>Contents 1p>
    <h2>Header 2h2>
    <p>Contents 2p>
    
    • 1
    • 2
    • 3
    • 4
    $(":header").css("background", "#EEE");
    
    • 1

    3.11、:animated

    3.11.1、概述

    匹配所有正在执行动画效果的元素

    3.11.2、语法

    $("element:not(:animated)");
    
    • 1

    3.11.3、示例

    只有对不在执行动画效果的元素执行一个动画特效

    <button id="run">Runbutton>
    <div>div>
    
    • 1
    • 2
    $("#run").click(function () {
    	$("div:not(:animated)").animate({ left: "+=20" }, 1000);
    });
    
    • 1
    • 2
    • 3

    3.12、:focus

    3.12.1、概述

    匹配当前获取焦点的元素。

    如同其他伪类选择器(那些以":"开始),建议:focus前面用标记名称或其他选择;否则,通用选择("*")是不言而喻的。换句话说,$(':focus')等同为$('*:focus')。如果你正在寻找当前的焦点元素,$( document.activeElement )将检索,而不必搜索整个DOM树。

    3.12.2、语法

    $(":focus")
    
    • 1

    3.12.3、示例

    添加一个"focused"的类名给那些有focus方法的元素

    <div id="content">
    	<input tabindex="1" />
    	<input tabindex="2" />
    	<select tabindex="3">
    		<option>select menuoption>
    	select>
    	<div tabindex="4">a divdiv>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    .focused {
    	background: #abcdef;
    }
    
    • 1
    • 2
    • 3
    $("#content").delegate("*", "focus blur", function (event) {
    	var elem = $(this);
    	setTimeout(function () {
    		elem.toggleClass("focused", elem.is(":focus"));
    	}, 0);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.13、:root

    3.13.1、概述

    选择该文档的根元素。

    在HTML中,文档的根元素,和$(":root")选择的元素一样, 永远是元素。

    3.13.2、语法

    $(":root");
    
    • 1

    3.13.3、示例

    设置背景颜色为黄色

    $(":root").css("background-color", "yellow");
    
    • 1

    3.14、:target

    3.14.1、概述

    选择由文档URI的格式化识别码表示的目标元素。

    如果文档的URI包含一个格式化的标识符,或hash(哈希), 然后:target选择器将匹配ID和标识符相匹配的元素。 例如,给定的URI https://example.com/#foo$( "p:target" ),将选择

    元素。

    4、内容选择器

    4.1、:contains(text)

    4.1.1、概述

    匹配包含给定文本的元素

    4.1.2、语法

    $("element:contains('text')");
    
    • 1
    4.1.2.1、参数
    • text:String 一个用以查找的字符串

    4.1.3、示例

    查找所有包含 “John” 的 div 元素

    <div>John Resigdiv>
    <div>George Martindiv>
    <div>Malcom John Sinclairdiv>
    <div>J. Ohndiv>
    
    • 1
    • 2
    • 3
    • 4

    4.2、:empty

    4.2.1、概述

    匹配所有不包含子元素或者文本的空元素

    4.2.2、语法

    $("element:empty");
    
    • 1

    4.2.3、示例

    查找所有不包含子元素或者文本的空元素

    <table>
    	<tr>
    		<td>Value 1td>
    		<td>td>
    	tr>
    	<tr>
    		<td>Value 2td>
    		<td>td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    $("td:empty");
    
    • 1

    4.3、:has(selector)

    4.3.1、概述

    匹配含有选择器所匹配的元素的元素

    4.3.2、语法

    $("element:has(selector)");
    
    • 1
    4.3.2.1、参数
    • selector:一个用于筛选的选择器

    4.3.3、示例

    给所有包含 p 元素的 div 元素添加一个 text 类

    <div><p>Hellop>div>
    <div>Hello again!div>
    
    • 1
    • 2
    $("div:has(p)").addClass("test");
    
    • 1

    4.4、:parent

    4.4.1、概述

    匹配含有子元素或者文本的元素

    4.4.2、语法

    $("element:parent");
    
    • 1

    4.4.3、示例

    查找所有含有子元素或者文本的 td 元素

    <table>
    	<tr>
    		<td>Value 1td>
    		<td>td>
    	tr>
    	<tr>
    		<td>Value 2td>
    		<td>td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    $("td:parent");
    
    • 1

    5、可见性选择器

    5.1、:hidden

    5.1.1、概述

    匹配所有不可见元素,或者typehidden的元素

    5.1.2、语法

    $("element:hidden");
    
    • 1

    5.1.3、示例

    查找隐藏的 tr

    <table>
    	<tr style="display: none">
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    $("tr:hidden");
    
    • 1

    匹配typehidden的元素

    <form>
    	<input type="text" name="email" />
    	<input type="hidden" name="id" />
    form>
    
    • 1
    • 2
    • 3
    • 4
    $("input:hidden");
    
    • 1

    5.2、:visible

    5.2.1、概述

    匹配所有的可见元素

    5.2.2、语法

    $("element:visible");
    
    • 1

    5.2.3、示例

    查找所有可见的 tr 元素

    <table>
    	<tr style="display: none">
    		<td>Value 1td>
    	tr>
    	<tr>
    		<td>Value 2td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    $("tr:visible");
    
    • 1

    6、属性选择器

    6.1、[attribute]

    6.1.1、概述

    匹配包含给定属性的元素。注意,在jQuery 1.3中,前导的@符号已经被废除!如果想要兼容最新版本,只需要简单去掉@符号即可。

    6.1.2、语法

    $("element[attribute]");
    
    • 1
    • attribute:String 属性名

    6.1.3、示例

    查找所有含有 id 属性的 div 元素

    <div>
    	<p>Hello!p>
    div>
    <div id="test2">div>
    
    • 1
    • 2
    • 3
    • 4
    $("div[id]");
    
    • 1

    6.2、[attribute=value]

    6.2.1、概述

    匹配给定的属性是某个特定值的元素

    6.2.2、语法

    $("element[attribute=value]");
    
    • 1
    6.2.2.1、参数
    • attribute:String 属性名
    • value:String 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。

    6.2.3、示例

    查找所有 name 属性是 newsletter 的 input 元素

    <input type="checkbox" name="newsletter" value="Hot Fuzz" />
    <input type="checkbox" name="newsletter" value="Cold Fusion" />
    <input type="checkbox" name="accept" value="Evil Plans" />
    
    • 1
    • 2
    • 3
    $("input[name='newsletter']").attr("checked", true);
    
    • 1

    6.3、[attribute!=value]

    6.3.1、概述

    匹配所有不含有指定的属性,或者属性不等于特定值的元素。

    此选择器等价于 :not([attr=value]) 要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value])

    6.3.2、语法

    $("element[attribute!=value]");
    
    • 1
    6.3.2.1、参数
    • attribute:String 属性名
    • value:String 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。

    6.3.3、示例

    查找所有 name 属性不是 newsletter 的 input 元素

    <input type="checkbox" name="newsletter" value="Hot Fuzz" />
    <input type="checkbox" name="newsletter" value="Cold Fusion" />
    <input type="checkbox" name="accept" value="Evil Plans" />
    
    • 1
    • 2
    • 3
    $("input[name!='newsletter']").attr("checked", true);
    
    • 1

    6.4、[attribute^=value]

    6.4.1、概述

    匹配给定的属性是以某些值开始的元素

    6.4.2、语法

    $("element[attribute^=value]");
    
    • 1
    6.4.2.1、参数
    • attribute:String 属性名
    • value:String 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。

    6.4.3、示例

    查找所有 name 以 ‘news’ 开始的 input 元素

    <input name="newsletter" />
    <input name="milkman" />
    <input name="newsboy" />
    
    • 1
    • 2
    • 3
    $("input[name^='news']");
    
    • 1

    6.5、[attribute$=value]

    6.5.1、概述

    匹配给定的属性是以某些值结尾的元素

    6.5.2、语法

    $("element[attribute$=value]");
    
    • 1
    6.5.2.1、参数
    • attribute:String 属性名
    • value:String 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。

    6.5.3、示例

    查找所有 name 以 ‘letter’ 结尾的 input 元素

    <input name="newsletter" />
    <input name="milkman" />
    <input name="jobletter" />
    
    • 1
    • 2
    • 3
    $("input[name$='letter']");
    
    • 1

    6.6、[attribute*=value]

    6.6.1、概述

    匹配给定的属性是以包含某些值的元素

    6.6.2、语法

    $("element[attribute*=value]");
    
    • 1
    6.6.2.1、参数
    • attribute:String 属性名
    • value:String 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含"]"时,用以避免冲突。

    6.6.3、示例

    查找所有 name 包含 ‘man’ 的 input 元素

    <input name="man-news" />
    <input name="milkman" />
    <input name="letterman2" />
    <input name="newmilk" />
    
    • 1
    • 2
    • 3
    • 4
    $("input[name*='man']");
    
    • 1

    6.7、[selector1][selector2][selectorN]复合属性选择器

    6.7.1、概述

    复合属性选择器,需要同时满足多个条件时使用。

    6.7.2、语法

    $("element[selector1][selector2][selectorN]");
    
    • 1
    6.7.2.1、参数
    • selector1:属性选择器
    • selector2:另一个属性选择器,用以进一步缩小范围
    • selectorN:任意多个属性选择器

    6.7.3、示例

    找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的

    <input id="man-news" name="man-news" />
    <input name="milkman" />
    <input id="letterman" name="new-letterman" />
    <input name="newmilk" />
    
    • 1
    • 2
    • 3
    • 4
    $("input[id][name$='man']");
    
    • 1

    7、子元素选择器

    7.1、:first-child

    7.1.1、概述

    匹配所给选择器( :之前的选择器)的第一个子元素

    类似的:first匹配第一个元素,但是:first-child选择器可以匹配多个:即为每个父级元素匹配第一个子元素。这相当于:nth-child(1)

    7.1.2、语法

    $("element:first-child")
    
    • 1

    7.1.3、示例

    在每个 ul 中查找第一个 li

    <ul>
    	<li>Johnli>
    	<li>Karlli>
    	<li>Brandonli>
    ul>
    <ul>
    	<li>Glenli>
    	<li>Taneli>
    	<li>Ralphli>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    $("ul li:first-child");
    
    • 1

    7.2、:first-of-type

    7.2.1、概述

    结构化伪类,匹配E的父元素的第一个E类型的孩子。等价于:nth-of-type(1) 选择器。

    7.2.2、语法

    $("element:first-of-type");
    
    • 1

    7.2.3、示例

    查找作为父元素的span类型子元素中的"长子"的span标签

    <div id="n1">
    	<div id="n2" class="abc">
    		<label id="n3">label1label>
    		<span id="n4">span1span>
    		<span id="n5" class="abc">span2span>
    		<span id="n6">span3span>
    	div>
    	<div id="n7">
    		<span id="n8" class="abc">span1span>
    		<span id="n9">span2span>
    	div>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    $("span:first-of-type");
    
    • 1

    7.3、:last-child

    7.3.1、概述

    匹配最后一个子元素

    :last 只匹配最后一个元素,而此选择符将为每个父元素匹配最后一个子元素

    7.3.2、语法

    $("element:last-child");
    
    • 1

    7.3.3、示例

    <ul>
    	<li>Johnli>
    	<li>Karlli>
    	<li>Brandonli>
    ul>
    <ul>
    	<li>Glenli>
    	<li>Taneli>
    	<li>Ralphli>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    $("ul li:last-child");
    
    • 1

    7.4、:last-of-type

    7.4.1、概述

    结构化伪类,匹配E的父元素的最后一个E类型的孩子

    7.5、:nth-child

    7.5.1、概述

    匹配其父元素下的第N个子或奇偶元素

    :eq(index) 匹配选择器指定序列的元素,而这个将为每一个父元素匹配子元素。

    :nth-child从1开始的,而:eq()是从0算起的!可以使用
    :nth-child(even)
    :nth-child(odd)
    :nth-child(3n)
    :nth-child(2)
    :nth-child(3n+1)
    :nth-child(3n+2)

    7.5.2、语法

    $("element:nth-child(index)");
    
    • 1
    7.5.2.1、参数
    • index:Number 要匹配元素的序号,从1开始

    7.5.3、示例

    <ul>
    	<li>Johnli>
    	<li>Karlli>
    	<li>Brandonli>
    ul>
    <ul>
    	<li>Glenli>
    	<li>Taneli>
    	<li>Ralphli>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    $("ul li:nth-child(2)");
    
    • 1

    7.6、:nth-last-child(n|even|odd|formula)

    7.6.1、概述

    选择所有他们父元素的第n个子元素。计数从最后一个元素开始到第一个。

    7.6.2、语法

    $("element:nth-last-child(n|even|odd|formula)");
    
    • 1
    7.6.2.1、参数
    • n:匹配子元素序号,必须为正整数,注意从1开始而不是0;
    • even:匹配所有偶数元素;
    • odd:匹配所有奇数元素;
    • formula:使用特殊公式如(an+b)进行选择,例如:nth-last-child(3n+2) 从倒数第二个子元素开始,匹配每个3的倍数的元素

    7.6.3、示例

    在每个匹配的ul中查找倒数第二个li

    <ul>
    	<li>1li>
    	<li>2li>
    	<li>3li>
    	<li>4li>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    $("ul li:nth-last-child(2)");
    
    • 1

    7.7、:nth-last-of-type(n|even|odd|formula)

    7.7.1、概述

    选择的所有他们的父级元素的第n个子元素,计数从最后一个元素到第一个。

    7.7.2、语法

    $("element:nth-last-of-type(n|even|odd|formula)");
    
    • 1
    7.7.2.1、参数
    • n:匹配子元素序号,必须为正整数,注意从1开始而不是0;
    • even:匹配所有偶数元素;
    • odd:匹配所有奇数元素;
    • formula:使用特殊公式如(an+b)进行选择,例如:nth-last-child(3n+2) 从倒数第二个子元素开始,匹配每个3的倍数的元素

    7.7.3、示例

    在每个匹配的ul中查找倒数第二个li

    <ul>
    	<li>1li>
    	<li>2li>
    	<li>3li>
    	<li>4li>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    $("ul li:nth-last-of-type(2)");
    
    • 1

    7.8、:nth-of-type(n|even|odd|formula)

    7.8.1、概述

    选择同属于一个父元素之下,并且标签名相同的子元素中的第n个。

    7.8.2、语法

    $("element:nth-of-type(n|even|odd|formula)");
    
    • 1
    7.8.2.1、参数
    • n:匹配子元素序号,必须为正整数,注意从1开始而不是0;
    • even:匹配所有偶数元素;
    • odd:匹配所有奇数元素;
    • formula:使用特殊公式如(an+b)进行选择,例如:nth-last-child(3n+2) 从倒数第二个子元素开始,匹配每个3的倍数的元素

    7.8.3、示例

    查找每个span,这个 span 是 其所有兄弟span元素中的第二个元素。

    <div>
    	<span>Johnspan>
    	<b>Kimb>
    	<span>Adamspan>
    	<b>Rafaelb>
    	<span>Olegspan>
    div>
    <div>
    	<b>Daveb>
    	<span>Annspan>
    div>
    <div>
    	<i><span>Mauricespan>i>
    	<span>Richardspan>
    	<span>Ralphspan>
    	<span>Jasonspan>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    $("span:nth-of-type(2)");
    
    • 1

    7.9、:only-child

    7.9.1、概述

    如果某个元素是父元素中唯一的子元素,那将会被匹配

    如果父元素中含有其他元素,那将不会被匹配。(注:这里的其他元素并不包含文本节点,如:

    图片

    ,用$('p img:only-child')是可以匹配)

    7.9.2、语法

    $("element:only-child");
    
    • 1

    7.9.3、示例

    在 ul 中查找是唯一子元素的 li

    <ul>
    	<li>Johnli>
    	<li>Karlli>
    	<li>Brandonli>
    ul>
    <ul>
    	<li>Glenli>
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    $("ul li:only-child");
    
    • 1

    7.10、:only-of-type

    7.10.1、概述

    选择所有没有兄弟元素,且具有相同的元素名称的元素。

    如果父元素有相同的元素名称的其他子元素,那么没有元素会被匹配。

    8、表单选择器

    8.1、:input

    8.1.1、概述

    匹配所有 input,textarea,select 和 button 元素

    8.1.2、语法

    $(":input");
    
    • 1

    8.1.3、示例

    查找所有的input元素,下面这些元素都会被匹配到。

    <form>
    	<input type="button" value="Input Button" />
    	<input type="checkbox" />
    	<input type="file" />
    	<input type="hidden" />
    	<input type="image" />
    	<input type="password" />
    	<input type="radio" />
    	<input type="reset" />
    	<input type="submit" />
    	<input type="text" />
    	<select>
    		<option>Optionoption>
    	select>
    	<textarea>textarea>
    	<button>Buttonbutton>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    $(":input");
    
    • 1

    8.2、:text

    8.2.1、概述

    匹配所有的单行文本框

    8.2.2、语法

    $(":text");
    
    • 1

    8.2.3、示例

    查找所有文本框

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":text");
    
    • 1

    8.3、:password

    8.3.1、概述

    匹配所有密码框

    8.3.2、语法

    $(":password");
    
    • 1

    8.3.3、示例

    查找所有密码框

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":password");
    
    • 1

    8.4、:radio

    8.4.1、概述

    匹配所有单选按钮

    8.4.2、语法

    $(":radio");
    
    • 1

    8.4.3、示例

    查找所有单选按钮

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":radio");
    
    • 1

    8.5、:checkbox

    8.5.1、概述

    匹配所有复选框

    8.5.2、语法

    $(":checkbox");
    
    • 1

    8.5.3、示例

    查找所有复选框

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":checkbox");
    
    • 1

    8.6、:submit

    8.6.1、概述

    匹配所有提交按钮,理论上只匹配 type="submit"input或者button,但是现在的很多浏览器,button元素默认的type即为submit,所以很多情况下,不设置typebutton也会成为筛选结果。为了防止歧义或者误操作,建议所有的button在使用时都添加type属性。

    8.6.2、语法

    $(":submit");
    
    • 1

    8.6.3、示例

    查找所有提交按钮

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":submit");
    
    • 1

    8.7、:image

    8.7.1、概述

    匹配所有图像域

    8.7.2、语法

    $(":image");
    
    • 1

    8.7.3、示例

    匹配所有图像域

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":image");
    
    • 1

    8.8、:reset

    8.8.1、概述

    匹配所有重置按钮

    8.8.2、语法

    $(":reset");
    
    • 1

    8.8.3、示例

    查找所有重置按钮

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":reset");
    
    • 1

    8.9、:button

    8.9.1、概述

    匹配所有按钮

    8.9.2、语法

    $(":button");
    
    • 1

    8.9.3、示例

    查找所有按钮

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":button");
    
    • 1

    8.10、:file

    8.10.1、概述

    匹配所有文件域

    8.10.2、语法

    $(":file");
    
    • 1

    8.10.3、示例

    查找所有文件域

    <form>
    	<input type="text" />
    	<input type="checkbox" />
    	<input type="radio" />
    	<input type="image" />
    	<input type="file" />
    	<input type="submit" />
    	<input type="reset" />
    	<input type="password" />
    	<input type="button" />
    	<select>
    		<option />
    	select>
    	<textarea>textarea>
    	<button>button>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    $(":file");
    
    • 1

    9、表单对象属性

    9.1、:enabled

    9.1.1、概述

    匹配所有可用元素

    9.1.2、语法

    $("element:enabled");
    
    • 1

    9.1.3、示例

    查找所有可用的input元素

    <form>
    	<input name="email" disabled="disabled" />
    	<input name="id" />
    form>
    
    • 1
    • 2
    • 3
    • 4
    $("input:enabled");
    
    • 1

    9.2、:disabled

    9.2.1、概述

    匹配所有不可用元素

    9.2.2、语法

    $("element:disabled");
    
    • 1

    9.2.3、示例

    查找所有不可用的input元素

    <form>
    	<input name="email" disabled="disabled" />
    	<input name="id" />
    form>
    
    • 1
    • 2
    • 3
    • 4
    $("input:disabled");
    
    • 1

    9.3、:checked

    9.3.1、概述

    匹配所有选中的被选中元素(复选框、单选框等,select中的option),对于select元素来说,获取选中推荐使用 :selected

    9.3.2、语法

    $("element:checked");
    
    • 1

    9.3.3、示例

    查找所有选中的复选框元素

    <form>
    	<input type="checkbox" name="newsletter" checked="checked" value="Daily" />
    	<input type="checkbox" name="newsletter" value="Weekly" />
    	<input type="checkbox" name="newsletter" checked="checked" value="Monthly" />
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    $("input:checked");
    
    • 1

    9.4、:selected

    9.4.1、概述

    匹配所有选中的option元素

    9.4.2、语法

    $("element:selected");
    
    • 1

    9.4.3、示例

    查找所有选中的选项元素

    <select>
    	<option value="1">Flowersoption>
    	<option value="2" selected="selected">Gardensoption>
    	<option value="3">Treesoption>
    select>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    $("select option:selected");
    
    • 1

    10、混淆选择器

    10.1、$.escapeSelector(selector)

    10.1.1、概述

    这个方法通常被用在类选择器或者ID选择器中包含一些CSS特殊字符的时候,这个方法基本上与CSS中CSS.escape()方法类似,唯一的区别是jquery中的这个方法支持所有浏览器。

    10.1.2、示例

    对含有#号的ID进行编码

    $.escapeSelector("#target"); // "\#target"
    
    • 1

    选择出类中包含.box的div

    <div>
    	<div class="notMe">div class="notMe"div>
    	<div class=".box myClass">div class=".box myClass"div>
    	<div class=".box">span class=".box"div>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    $("div").find("." + $.escapeSelector(".box"));
    
    • 1

    写在最后

    如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
    如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
    如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
    谢谢各位读者们啦(^_^)∠※!!!

  • 相关阅读:
    Effective Java学习笔记---------序列化
    若依前端使用
    中国帘子布市场投资前景分析及供需格局研究预测报告
    AI美颜SDK算法详解
    解释一下前端框架中的虚拟DOM(virtual DOM)和实际DOM(real DOM)之间的关系。
    JavaScript重点知识总结二
    pytorch笔记(九)转置卷积、膨胀卷积
    一行代码优化 pdfjs 加载大文件的pdf 速度
    2020最新Java常见面试题及答案
    Android.mk实践
  • 原文地址:https://blog.csdn.net/weixin_62277266/article/details/126322400