jQuery选择器

28 篇文章 1 订阅
3 篇文章 0 订阅

jQuery选择器继承了CSS与Path语言的部分语法,允许通过标签名、属性名或内容对DOM元素进行快速、准确的选择,而不必担心浏览器的兼容性,通过jQuery选择器对页面元素的精准定位,才能完成元素属性和行为的处理。




文章目录




标签选择器

语法: jQuery( “标签名” )
描述: 选择拥有给定标签名的所有元素。
返回值: 返回值为一个类数组jQuery对象,可以通过for…of方法遍历
示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>

	</head>
	<body>
		<p>我是p标签</p>
		<span>我是span标签</span>
		<p>我是p标签</p>
		<span>我是span标签</span>
		<script type="text/javascript">
			$(function(){
				let tag = $("span");//获取了所有的span标签
				tag.css("color","red");
				console.log(tag);//打印返回值
			})
		</script>
	</body>
</html>

输出结果:在这里插入图片描述
再来看一下控制台打印结果:
在这里插入图片描述
【备注】因为jQuery中的选择器的返回值几乎都是返回一个类数组jQuery对象,所以之后的选择器返回值不再重复展示说明。

ID选择器

语法: jQuery( “#id”)
描述: 选择一个具有给定id属性的单个元素。
示例: 查找ID为“myDiv”的元素。

<!doctype html>
<html lang="en">
	<head>
	  <meta charset="utf-8">
	  <title>id demo</title>
	  <style>
	  div {
	    width: 90px;
	    height: 90px;
	    float: left;
	    padding: 5px;
	    margin: 5px;
	    background-color: #eee;
	  }
	  </style>
	  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
	</head>
	<body>
	 
	<div id="notMe"><p>id="notMe"</p></div>
	<div id="myDiv">id="myDiv"</div>
	 
	<script>
	$( "#myDiv" ).css( "border", "3px solid red" );
	</script>
	 
	</body>
</html>

输出结果:
在这里插入图片描述

class选择器

语法: jQuery( “.class” )
描述: 选择给定样式类名的所有元素。
示例: 找到该元素的类名为“myclass”。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>class demo</title>
  <style>
  div, span {
    width: 120px;
    height: 40px;
    float: left;
    padding: 10px;
    margin: 10px;
    background-color: #EEEEEE;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div class="notMe">div class="notMe"</div>
<div class="myClass">div class="myClass"</div>
<span class="myClass">span class="myClass"</span>
 
<script>
$( ".myClass" ).css( "border", "3px solid red" );
</script>
 
</body>
</html>

输出结果:
在这里插入图片描述

通配符选择器

语法: jQuery( “*” )
描述: 匹配所有元素 。
示例:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>all demo</title>
  <style>
  h3 {
    margin: 0;
  }
  div, span, p {
    width: 80px;
    height: 40px;
    float: left;
    padding: 10px;
    margin: 10px;
    background-color: #EEEEEE;
  }
  #test {
    width: auto;
    height: auto;
    background-color: transparent;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="test">
  <div>DIV</div>
  <span>SPAN</span>
  <p>P <button>Button</button></p>
</div>
 
<script>
var elementCount = $( "#test" ).find( "*" ).css( "border", "3px solid red" ).length;
$( "body" ).prepend( "<h3>" + elementCount + " elements found</h3>" );
</script>
 
</body>
</html>

输出结果:
在这里插入图片描述

属性选择器

属性选择器有很多种,这里列举一些我们在jQuery中经常使用的选择器

根据属性名选择元素 [attr]

语法: jQuery( “[attribute]” )
attribute: 一个属性名
描述: 选择所有具有指定属性的元素,该属性可以是任何值。
示例: 给具有id属性的div绑定一个单一的点击,文本中增加div的id文本。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeHas demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>no id</div>
<div id="hey">with id</div>
<div id="there">has an id</div>
<div>nope</div>
 
<script>
// Using .one() so the handler is executed at most once
// per element per event type
$( "div[id]" ).one( "click", function() {
  var idString = $( this ).text() + " = " + $( this ).attr( "id" );
  $( this ).text( idString );
});
</script>
 
</body>
</html>

输出结果:
在这里插入图片描述

根据属性=val选择元素 [attr=val]

语法: jQuery( “[attribute=‘value’]” )
attribute: 一个属性名.
value: 一个属性值,可以是一个 有效标识符或带一个引号的字符串。

描述: 选择指定属性是给定值的元素。
示例: 查找所有属性值为 ‘Hot Fuzz’ 的 input 元素,并且将跟在它后面的 span 元素中的文本修改成 " Hot Fuzz"。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeEquals demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <label>
    <input type="radio" name="newsletter" value="Hot Fuzz">
    <span>name?</span>
  </label>
</div>
<div>
  <label>
    <input type="radio" name="newsletter" value="Cold Fusion">
    <span>value?</span>
  </label>
</div>
<div>
  <label>
    <input type="radio" name="newsletter" value="Evil Plans">
    <span>value?</span>
  </label>
</div>
 
<script>
$( "input[value='Hot Fuzz']" ).next().text( "Hot Fuzz" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

对[attr=val]取反 [attr!=val]

语法: jQuery( “[attribute!=‘value’]” )
attribute: 一个属性名.
value: 一个属性值,可以是一个 有效标识符或带一个引号的字符串。

描述: 选择不存在指定属性,或者指定的属性值不等于给定值的元素。
示例: 查找所有 name 属性不是 ‘newsletter’ 的元素,并在其后的 span 中追加 ‘; not newsletter’ HTML。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeNotEqual demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <input type="radio" name="newsletter" value="Hot Fuzz">
  <span>name is newsletter</span>
</div>
<div>
  <input type="radio" value="Cold Fusion">
  <span>no name</span>
</div>
<div>
  <input type="radio" name="accept" value="Evil Plans">
  <span>name is accept</span>
</div>
 
<script>
$( "input[name!='newsletter']" ).next().append( "<b>; not newsletter</b>" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 attr 以 val 开头的元素 [attr^=val]

语法: jQuery( “[attribute^=‘value’]” )
attribute: 一个属性名.
value: 一个属性值,可以是一个 有效标识符或带一个引号的字符串。
描述: 选择指定属性是以给定字符串开始的元素
示例: 查找属性名称以“news”开头的所有输入,并将文本放入其中。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeStartsWith demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input name="newsletter">
<input name="milkman">
<input name="newsboy">
 
<script>
$( "input[name^='news']" ).val( "news here!" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 attr 以 val 结尾的元素 [attr$=val]

语法: jQuery( “[attribute$=‘value’]” )
attribute: 一个属性名.
value: 一个属性值,可以是一个 有效标识符或带一个引号的字符串。

描述: 选择指定属性是以给定值结尾的元素。这个比较是区分大小写的。
示例: 查找所有的属性名称以“letter”的结束,并把他们的文字输入。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeEndsWith demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input name="newsletter">
<input name="milkman">
<input name="jobletter">
 
<script>
$( "input[name$='letter']" ).val( "a letter" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 attr 的值 中 包含 val 的元素 [attr*=val]

语法: jQuery( “*” )
描述: 匹配所有元素 。
示例: 查找所有的属性名称以“letter”的结束,并把他们的文字输入。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeEndsWith demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input name="newsletter">
<input name="milkman">
<input name="jobletter">
 
<script>
$( "input[name$='letter']" ).val( "a letter" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 attr = val 或者 attr 以 val- 开头的属性 [attr|=val]

语法: jQuery( “[attribute|=‘value’]” )
attribute: 一个属性名.
value: 一个属性值,引号是可选的. 可以是一个 有效标识符或带一个引号的字符串。

描述: 选择指定属性值等于给定字符串或以该字符串为前缀(该字符串后跟一个连字符“-” )的元素。
示例: 查找hreflang属性值是英语的所有链接。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeContainsPrefix demo</title>
  <style>
  a {
    display: inline-block;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<a href="example.html" hreflang="en">Some text</a>
<a href="example.html" hreflang="en-UK">Some other text</a>
<a href="example.html" hreflang="english">will not be outlined</a>
 
<script>
$( "a[hreflang|='en']" ).css( "border", "3px dotted green" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 attr 属性值 包含 val 单词的 元素 [attr~=val]

语法: jQuery( “[attribute~=‘value’]” )
attribute: 一个属性名.
value: 一个属性值,可以是一个 有效标识符或带一个引号的字符串。

描述: 选择指定属性用空格分隔的值中包含一个给定值的元素。
【注意】:
这个选择器测试属性值中的每个单词字符串,其中“word”是一个由空白分隔的字符串定义的。如果测试字符串恰好等于任何一个字词这个选择器将选择。
示例: 查找所有属性中含有 ‘man’ 这个单词的文本框,并且修改其文本值。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeContainsWord demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input name="man-news">
<input name="milk man">
<input name="letterman2">
<input name="newmilk">
 
<script>
$( "input[name~='man']" ).val( "mr. man is in it!" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

and 两个属性选择器必须同时满足 […][…]

语法: jQuery( “[attributeFilter1][attributeFilter2][attributeFilterN]” )
attributeFilter1: 一个属性过滤器.
attributeFilter2: 另一个属性过滤器, 用于进一步减少被选择的元素。
attributeFilterN: 根据需要有更多的属性过滤器

描述: 选择匹配所有指定的属性筛选器的元素
示例: 查找那些有 id 属性,并且 name 属性以 man 结尾的输入框,并将它们的值设为 ‘only this one’。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeMultiple demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input id="man-news" name="man-news">
<input name="milkman">
<input id="letterman" name="new-letterman">
<input name="newmilk">
 
<script>
$( "input[id][name$='man']" ).val( "only this one" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

后代选择器

语法: jQuery( “ancestor descendant” )
ancestor: 任何有效的选择器。
descendant: 一个用来筛选后代元素的选择器。
描述: 选择给定的祖先元素的所有后代元素。
【注意】一个元素的后代可能是该元素的一个孩子,孙子,曾孙等。
示例: 查找所有表单下的input后代元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>descendant demo</title>
  <style>
  form {
    border: 2px green solid;
    padding: 2px;
    margin: 0;
    background: #efe;
  }
  div {
    color: red;
  }
  fieldset {
    margin: 1px;
    padding: 3px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<form>
  <div>Form is surrounded by the green border.</div>
 
  <label for="name">Child of form:</label>
  <input name="name" id="name">
 
  <fieldset>
    <label for="newsletter">Grandchild of form, child of fieldset:</label>
    <input name="newsletter" id="newsletter">
  </fieldset>
</form>
Sibling to form: <input name="none">
 
<script>
$( "form input" ).css( "border", "2px dotted blue" );
$( "form fieldset input" ).css( "backgroundColor", "yellow" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

直接子元素选择器

语法: jQuery( “parent > child” )

描述: 选择所有指定“parent”元素中指定的"child"的直接子元素。
【注意】这个子元素组合选择器(E > F)被认为是后代组合选择器(E F)的一个更具体的形式,但是他们有所不同,子元素组合选择器(E > F)它只会选择第一级的后代。

示例: 为无序列表

  • 的所有直接子元素加上边框。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>child demo</title>
  <style>
  body {
    font-size: 14px;
  }
  	</style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<ul class="topnav">
  <li>Item 1</li>
  <li>Item 2
    <ul>
    <li>Nested item 1</li>
    <li>Nested item 2</li>
    <li>Nested item 3</li>
    </ul>
  </li>
  <li>Item 3</li>
</ul>
 
<script>
$( "ul.topnav > li" ).css( "border", "3px double red" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

兄弟选择器

选中紧邻的兄弟元素

语法: jQuery( “prev + next” )
prev: 任何有效的选择器。
next: 用于筛选紧跟在 “prev” 后面的元素的选择器。

描述: 选择所有紧接在 “prev” 元素后的 “next” 元素

【注意】其中重要的一点既要考虑下一个相邻兄弟选择器( prev + next )和一般兄弟选择器( prev ~ siblings )所选择到的元素,必须在同一个父元素下。

示例: 查找所有跟在 label 后面的 input 元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>next adjacent demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<form>
  <label for="name">Name:</label>
  <input name="name" id="name">
  <fieldset>
    <label for="newsletter">Newsletter:</label>
    <input name="newsletter" id="newsletter">
  </fieldset>
</form>
<input name="none">
 
<script>
$( "label + input" ).css( "color", "blue" ).val( "Labeled!" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中后面所有的兄弟元素

语法: jQuery( “prev ~ siblings” )
prev: 任何有效的选择器
siblings: 一个选择器来过滤第一选择器以后的兄弟元素。

描述: 匹配 “prev” 元素之后的所有 兄弟元素。具有相同的父元素,并匹配过滤“siblings”选择器。
【注意】(prev + next) 和 (prev ~ siblings)之间最值得注意的不同点是他们各自的可及之范围。前者只达到紧随的同级元素,后者扩展了该达到跟随其的所有同级元素。

示例: 查找所有跟在 id 为 #prev 的元素后面的所有 div。注意,跟在后面的 span 不会被选中,因为它不是 div 。同时 “niece” 也不会被选中,因为它是某个兄弟元素的子元素,而不是兄弟元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>next siblings demo</title>
  <style>
  div, span {
    display: block;
    width: 80px;
    height: 80px;
    margin: 5px;
    background: #bfa;
    float: left;
    font-size: 14px;
  }
  div#small {
    width: 60px;
    height: 25px;
    font-size: 12px;
    background: #fab;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>div (doesn't match since before #prev)</div>
<span id="prev">span#prev</span>
<div>div sibling</div>
<div>div sibling <div id="small">div niece</div></div>
<span>span sibling (not div)</span>
<div>div sibling</div>
 
<script>
$( "#prev ~ div" ).css( "border", "3px groove blue" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

分组选择器

语法: jQuery( “selector1, selector2, selectorN” )
selector1: 任何有效的选择
selector2: 其他有效的选择
selectorN: 更多有效的选择只要你喜欢。
描述: 将每一个选择器匹配到的元素合并后一起返回。
示例: 查找任何匹配下面三个选择器的元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>element demo</title>
  <style>
  div, span {
    width: 60px;
    height: 60px;
    float: left;
    padding: 10px;
    margin: 10px;
    background-color: #eee;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>DIV1</div>
<div>DIV2</div>
<span>SPAN</span>
 
<script>
$( "div" ).css( "border", "9px solid red" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

子元素选择器

选中父级元素下第一个子元素

语法: jQuery( “:first-child” )
描述: 选择所有父级元素下的第一个子元素。
【注意】虽然:first只匹配一个单独的元素,但是:first-child选择器可以匹配多个:即为每个父级元素匹配第一个子元素。这相当于:nth-child(1)。
示例: 给每个匹配的 div 中查找第一个 span,并加上下划线及增加鼠标悬停效果。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>first-child demo</title>
  <style>
  span {
    color: #008;
  }
  span.sogreen {
    color: green;
    font-weight: bolder;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <span>John,</span>
  <span>Karl,</span>
  <span>Brandon</span>
</div>
<div>
  <span>Glen,</span>
  <span>Tane,</span>
  <span>Ralph</span>
</div>
 
<script>
$( "div span:first-child" )
  .css( "text-decoration", "underline" )
  .hover(function() {
    $( this ).addClass( "sogreen" );
  }, function() {
    $( this ).removeClass( "sogreen" );
  });
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

选中父级元素下最后一个 子元素

语法: jQuery( “:last-child” )
描述: 选择所有父级元素下的最后一个子元素。
【注意】:last 只匹配一个单独的元素, :last-child 选择器可以匹配多个元素:即,为每个父级元素匹配最后一个子元素。
示例: 在每个匹配的 div 中查找最后一个 span ,并加上 CSS 以及增加鼠标悬停效果。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>last-child demo</title>
  <style>
  span.solast {
    text-decoration: line-through;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <span>John,</span>
  <span>Karl,</span>
  <span>Brandon,</span>
  <span>Sam</span>
</div>
<div>
  <span>Glen,</span>
  <span>Tane,</span>
  <span>Ralph,</span>
  <span>David</span>
</div>
 
<script>
$( "div span:last-child" )
  .css({ color:"red", fontSize:"80%" })
  .hover(function() {
    $( this ).addClass( "solast" );
  }, function() {
    $( this ).removeClass( "solast" );
  });
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中父级元素下的 同类型的第一个子元素

语法: jQuery( “:first-of-type” )
描述: 选择所有相同的元素名称的第一个兄弟元素。
【注意】:first-of-type 选择器匹配元素,在文档树中,相同的父元素并且在其他相同的元素名称之前。
示例: 在每一个匹配的div中查找第一个span,给它添加一个类。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>first-of-type demo</title>
  <style>
  span.fot {
    color: red;
    font-size: 120%;
    font-style: italic;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <span>Corey,</span>
  <span>Yehuda,</span>
  <span>Adam,</span>
  <span>Todd</span>
</div>
<div>
  <b>Nobody,</b>
  <span>Jörn,</span>
  <span>Scott,</span>
  <span>Timo</span>
</div>
 
<script>
$( "span:first-of-type" ).addClass( "fot" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中父级元素下的 同类型的最后一个 子元素

语法: jQuery( “:last-of-type” )
描述: 选择的所有元素之间具有相同元素名称的最后一个兄弟元素。
【注意】:last-of-type 选择器匹配在文档树中具有相同的父元素并且相同的元素名称,后面没有任何其他元素 的元素。
示例: 在每一个匹配的div中找到最后一个span,并加上 CSS 以及增加鼠标悬停效果。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>last-of-type demo</title>
  <style>
  span.solast {
    text-decoration: line-through;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <span>Corey,</span>
  <span>Yehuda,</span>
  <span>Adam,</span>
  <span>Todd</span>
</div>
<div>
  <span>Jörn,</span>
  <span>Scott,</span>
  <span>Timo,</span>
  <b>Nobody</b>
</div>
 
<script>
$( "span:last-of-type" )
  .css({ color:"red", fontSize:"80%" })
  .hover(function() {
    $( this ).addClass( "solast" );
  }, function() {
    $( this ).removeClass( "solast" );
  });
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

:nth-child()

语法: jQuery( “:nth-child(index/even/odd/equation)” )
index: 每个相匹配子元素的索引值,从1开始,也可以是字符串 even 或 odd,或一个方程式( 例如 :nth-child(even), :nth-child(4n) )。
描述: 选择的他们所有父元素的第n个子元素。
示例: 查找每个匹配的 ul 中的第二个 li,并将它标记出来。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>nth-child demo</title>
  <style>
  div {
    float: left;
  }
  span {
    color: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <ul>
    <li>John</li>
    <li>Karl</li>
    <li>Brandon</li>
  </ul>
</div>
<div>
  <ul>
    <li>Sam</li>
  </ul>
</div>
<div>
  <ul>
    <li>Glen</li>
    <li>Tane</li>
    <li>Ralph</li>
    <li>David</li>
  </ul>
</div>
 
<script>
$( "ul li:nth-child(2)" ).append( "<span> - 2nd!</span>" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

:nth-last-child()

语法: jQuery( “:nth-last-child(index/even/odd/equation)” )
描述: 选择所有他们父元素的第n个子元素。计数从最后一个元素开始到第一个。
示例: 找到该元素的类名为“myclass”。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>nth-last-child demo</title>
  <style>
  div {
    float: left;
  }
  span {
    color: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <ul>
    <li>John</li>
    <li>Karl</li>
    <li>Adam</li>
  </ul>
</div>
<div>
  <ul>
    <li>Dan</li>
  </ul>
</div>
<div>
  <ul>
    <li>Dave</li>
    <li>Rick</li>
    <li>Timmy</li>
    <li>Gibson</li>
  </ul>
</div>
<script>
$( "ul li:nth-last-child(2)" ).append( "<span> - 2nd to last!</span>" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

:nth-of-type()

语法: jQuery( “:nth-of-type(index/even/odd/equation)” )
描述: 选择同属于一个父元素之下,并且标签名相同的子元素中的第n个。
示例: 查找每个span,这个 span 是 其所有兄弟span元素中的第二个元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>nth-of-type demo</title>
  <style>
  .nth {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <span>John</span>,
  <b>Kim</b>,
  <span>Adam</span>,
  <b>Rafael</b>,
  <span>Oleg</span>
</div>
<div>
  <b>Dave</b>,
  <span>Ann</span>
</div>
<div>
  <i><span>Maurice</span></i>,
  <span>Richard</span>,
  <span>Ralph</span>,
  <span>Jason</span>
</div>
 
<script>
$( "span:nth-of-type(2)" )
  .append( "<span> is 2nd sibling span</span>" )
  .addClass( "nth" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

:nth-last-of-type()

语法: jQuery(":nth-last-of-type(index/even/odd/equation)" )
index: 每个相匹配子元素的索引值,从最后一个开始(1),也可以是字符串 even 或 odd,或一个方程式( 例如 :nth-last-of-type(even), :nth-last-of-type(4n))
描述: 选择所有他们父级兄弟元素下具有相同的元素名的倒数第n个子元素,计数从最后一个元素开始到第一个。
示例: 在每个匹配的ul中查找倒数第二个li,并将它标记出来。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>nth-last-of-type demo</title>
  <style>
  div {
    float: left;
  }
  span {
    color: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <ul>
    <li>John</li>
    <li>Karl</li>
    <li>Adam</li>
  </ul>
</div>
<div>
  <ul>
    <li>Dan</li>
  </ul>
</div>
<div>
  <ul>
    <li>Dave</li>
    <li>Rick</li>
    <li>Timmy</li>
    <li>Gibson</li>
  </ul>
</div>
 
<script>
$( "ul li:nth-last-of-type(2)" ).append( "<span> - 2nd to last!</span>" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

获取父元素中的唯一一个子元素

语法: jQuery( “:only-child” )
描述: 如果某个元素是其父元素的唯一子元素,那么它就会被选中。
【注意】
若父元素有其他子元素,就不会被匹配。
如果父元素中含有其他元素,那将不会被匹配。(注:这里的其他元素并不包含文本节点,如:

图片

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

示例: 若每个 div 中只有一个按钮,则改变这些按钮的外观。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>only-child demo</title>
  <style>
  div {
    width: 100px;
    height: 80px;
    margin: 5px;
    float: left;
    background: #b9e;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <button>Sibling!</button>
  <button>Sibling!</button>
</div>
 
<div>
  <button>Sibling!</button>
</div>
 
<div>
  None
</div>
 
<div>
  <button>Sibling!</button>
  <button>Sibling!</button>
  <button>Sibling!</button>
</div>
 
<div>
  <button>Sibling!</button>
</div>
 
<script>
$( "div button:only-child" ).text( "Alone" ).css( "border", "2px blue solid" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

其他选择器(jQuery的选择器扩展)

jQuery扩展的选择器可以i分为:基本、内容、可见性、表单对象属性四个部分

基本

获取选择器 选中的多个元素中的 第一个

语法: jQuery( “:first” )
描述: 选择第一个匹配的DOM元素。
示例: 查找第一个表行。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>first demo</title>
  <style>
  td {
    color: blue;
    font-weight: bold;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table>
  <tr><td>Row 1</td></tr>
  <tr><td>Row 2</td></tr>
  <tr><td>Row 3</td></tr>
</table>
 
<script>
$( "tr:first" ).css( "font-style", "italic" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取选择器 选中的多个元素中的 最后一个元素

语法: jQuery( “:last” )
描述: 选择最后一个匹配的元素。
示例: 查找表格中的最后一行。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>last demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table>
  <tr><td>First Row</td></tr>
  <tr><td>Middle Row</td></tr>
  <tr><td>Last Row</td></tr>
</table>
 
<script>
$( "tr:last" ).css({ backgroundColor: "yellow", fontWeight: "bolder" });
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中指定索引位置的元素

语法1: jQuery( “:eq(index)” )
index: 要匹配元素的索引值(从0开始计数)
语法2: jQuery( “:eq(-index)” )
indexFromEnd: 要匹配元素的索引值(从0开始计数), 从最后一个元素开始倒计数
描述: 在匹配的集合中选择索引值为index的元素。
示例: 查找第三个 td。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>eq demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
  <tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
  <tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
</table>
 
<script>
$( "td:eq( 2 )" ).css( "color", "red" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 大于index 索引的元素

语法: jQuery( “:gt(index)” )
index: 从0开始计数的索引值。
描述: 选择匹配集合中所有大于给定index(索引值)的元素。
示例: 给TD#5高亮的黄色背景和TD#8个红色的文字颜色。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>gt demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
  <tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
  <tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
</table>
 
<script>
$( "td:gt(4)" ).css( "backgroundColor", "yellow" );
$( "td:gt(-2)" ).css( "color", "red" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

选中 小于index 索引的元素

语法1: jQuery( “:lt(index)” )
index: 从 0 开始计数的索引值。
语法2: jQuery( “:lt(-index)” )
-index: 从0开始计数的索引值。 从最后一个元素开始反向计数。
描述: 选择匹配集合中所有索引值小于给定index参数的元素。
示例: 查找ID为“myDiv”的元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>lt demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
  <tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
  <tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
</table>
 
<script>
$( "td:lt(4)" ).css( "backgroundColor", "yellow" );
$( "td:lt(-2)" ).css( "color", "red" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

排除 selector选中的元素

语法: jQuery( “:not(selector)” )
selector: 一个用来过滤的选择器。
描述: 选择所有元素去除不匹配给定的选择器的元素。
示例: 查找所有没有被选中的复选框,然后高亮后面的 span。注意,当你点击复选框的时候不会有反应,因为没有绑定任何点击事件。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>not demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>
  <input type="checkbox" name="a">
  <span>Mary</span>
</div>
<div>
  <input type="checkbox" name="b">
  <span>lcm</span>
</div>
<div>
  <input type="checkbox" name="c" checked="checked">
  <span>Peter</span>
</div>
 
<script>
$( "input:not(:checked) + span" ).css( "background-color", "yellow" );
$( "input").attr( "disabled", "disabled" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取奇对应的元素

描述: 选择索引值为奇数元素,从 0 开始计数。同样查看偶数 even。
【注意】这是基于0的索引,所以:odd选择器是选择第二个元素,第四个元素,依此类推在匹配。
示例: 查找表格中索引值是奇数的行(即实际表格中的偶数行),即匹配第二行、第四行、第六行等 (索引值是 1, 3 ,5 等 )。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>odd demo</title>
  <style>
  table {
    background: #f3f7f5;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>Row with Index #0</td></tr>
  <tr><td>Row with Index #1</td></tr>
  <tr><td>Row with Index #2</td></tr>
  <tr><td>Row with Index #3</td></tr>
</table>
 
<script>
$( "tr:odd" ).css( "background-color", "#bbbbff" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取偶对应的元素

描述: 选择所引值为偶数的元素,从 0 开始计数。
示例: 查找偶数表行,匹配第一个、第三个等(索引0, 2, 4等)。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>even demo</title>
  <style>
  table {
    background: #eee;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>Row with Index #0</td></tr>
  <tr><td>Row with Index #1</td></tr>
  <tr><td>Row with Index #2</td></tr>
  <tr><td>Row with Index #3</td></tr>
</table>
 
<script>
$( "tr:even" ).css( "background-color", "#bbf" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取 聚焦的元素

语法: jQuery( “:focus” )
描述: 选择当前获取焦点的元素。
示例: 给获取焦点的元素添加focused类

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>focus demo</title>
  <style>
  .focused {
    background: #abcdef;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div id="content">
  <input tabIndex="1">
  <input tabIndex="2">
  <select tabIndex="3">
    <option>select menu</option>
  </select>
  <div tabIndex="4">
    a div
  </div>
</div>
 
<script>
$( "#content" ).delegate( "*", "focus blur", function() {
  var elem = $( this );
  setTimeout(function() {
    elem.toggleClass( "focused", elem.is( ":focus" ) );
  }, 0 );
});
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取URL对应的锚点的元素

语法: jQuery( “:target” )
描述: 选择由文档URI的格式化识别码表示的目标元素。

内容

获取 选中的元素中 包含 指定的文本 元素

语法: jQuery( “:contains(text)” )
text: 用来查找的一个文本字符串。这是区分大小写的。
描述: 选择所有包含指定文本的元素。
示例: 查找所有包含“John”的div,并强调他们。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>contains demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div>John Resig</div>
<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>
 
<script>
$( "div:contains('John')" ).css( "text-decoration", "underline" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取标签体中内容为空的元素

语法: jQuery( “#id”)
描述: 选择一个具有给定id属性的单个元素。
示例: 查找ID为“myDiv”的元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>empty demo</title>
  <style>
  td {
    text-align: center;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>TD #0</td><td></td></tr>
  <tr><td>TD #2</td><td></td></tr>
  <tr><td></td><td>TD#5</td></tr>
</table>
 
<script>
$( "td:empty" )
  .text( "Was empty!" )
  .css( "background", "rgb(255,220,200)" );
</script>
 
</body>
</html>

运行结果:在这里插入图片描述

:parent

语法: jQuery( “:parent” )
描述: 选择所有含有子元素或者文本的父级元素。
示例: 查找含有子元素的 td 元素,包括含有文本的 td。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>parent demo</title>
  <style>
  td {
    width: 40px;
    background: green;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<table border="1">
  <tr><td>Value 1</td><td></td></tr>
  <tr><td>Value 2</td><td></td></tr>
</table>
 
<script>
$( "td:parent" ).fadeTo( 1500, 0.3 );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

查找元素中是否包含 指定选择器的元素

语法: jQuery( “:has(selector)” )
selector: 任何选择器。
描述: 选择元素其中至少包含指定选择器匹配的一个种元素。
示例: 给所有含有 p 段落标签的 div 加上一个名为 “test” 的 class。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>has demo</title>
  <style>
  .test {
    border: 3px inset red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div><p>Hello in a paragraph</p></div>
<div>Hello again! (with no paragraph)</div>
 
<script>
$( "div:has(p)" ).addClass( "test" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

可见性

:visible

语法: jQuery(":visible" )
描述: 选择所有可见的元素。
示例: 在所有可见的 div 上添加事件,当点击后变成黄色。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>visible demo</title>
  <style>
  div {
    width: 50px;
    height: 40px;
    margin: 5px;
    border: 3px outset green;
    float: left;
  }
  .starthidden {
    display: none;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<button>Show hidden to see they don't change</button>
<div></div>
<div class="starthidden"></div>
<div></div>
<div></div>
<div style="display:none;"></div>
 
<script>
$( "div:visible" ).click(function() {
  $( this ).css( "background", "yellow" );
});
$( "button" ).click(function() {
  $( "div:hidden" ).show( "fast" );
});
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

处理内容不可见的标签

语法: jQuery(":hidden" )
描述: 选择所有隐藏的元素。
示例: 示所有隐藏divs和统计隐藏的inputs。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>hidden demo</title>
  <style>
  div {
    width: 70px;
    height: 40px;
    background: #e7f;
    margin: 5px;
    float: left;
  }
  span {
    display: block;
    clear: left;
    color: red;
  }
  .starthidden {
    display: none;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<span></span>
<div></div>
<div style="display:none;">Hider!</div>
<div></div>
 
<div class="starthidden">Hider!</div>
<div></div>
 
<form>
  <input type="hidden">
  <input type="hidden">
  <input type="hidden">
</form>
 
<span></span>
 
<script>
// In some browsers :hidden includes head, title, script, etc...
var hiddenElements = $( "body" ).find( ":hidden" ).not( "script" );
 
$( "span:first" ).text( "Found " + hiddenElements.length + " hidden elements total." );
$( "div:hidden" ).show( 3000 );
$( "span:last" ).text( "Found " + $( "input:hidden" ).length + " hidden inputs." );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

表单对象属性

获取所有被勾选的元素

语法: jQuery( “:checked” )
描述: 匹配所有勾选的元素。
示例: 确定有多少input元素是选中的.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>checked demo</title>
  <style>
  div {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<form>
  <p>
    <input type="checkbox" name="newsletter" value="Hourly" checked="checked">
 
    <input type="checkbox" name="newsletter" value="Daily">
    <input type="checkbox" name="newsletter" value="Weekly">
 
    <input type="checkbox" name="newsletter" value="Monthly" checked>
    <input type="checkbox" name="newsletter" value="Yearly">
  </p>
</form>
<div></div>
 
<script>
var countChecked = function() {
  var n = $( "input:checked" ).length;
  $( "div" ).text( n + (n === 1 ? " is" : " are") + " checked!" );
};
countChecked();
 
$( "input[type=checkbox]" ).on( "click", countChecked );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取被选中的元素

描述: 匹配所有选中的option元素
示例:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selected demo</title>
  <style>
  div {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<select name="garden" multiple="multiple">
  <option>Flowers</option>
  <option selected="selected">Shrubs</option>
  <option>Trees</option>
  <option selected="selected">Bushes</option>
  <option>Grass</option>
  <option>Dirt</option>
</select>
<div></div>
 
<script>
$( "select" )
  .change(function() {
    var str = "";
    $( "select option:selected" ).each(function() {
      str += $( this ).text() + " ";
    });
    $( "div" ).text( str );
  })
  .trigger( "change" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取所有被禁用的元素

语法: jQuery( “:disabled” )
描述: 选择所有被禁用的元素。
示例: 查找所有被禁用的input元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>disabled demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<form>
  <input name="email" disabled="disabled">
  <input name="id">
</form>
 
<script>
$( "input:disabled" ).val( "this is it" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

获取所有被启用的元素

语法: jQuery( “:enabled” )
描述: 选择所有可用的(手册网注:未被禁用的元素)元素。
示例: 查找所有的input元素已启用。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>enabled demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<form>
  <input name="email" disabled="disabled">
  <input name="id">
</form>
 
<script>
$( "input:enabled" ).val( "this is it" );
</script>
 
</body>
</html>

运行结果:
在这里插入图片描述

注:本文参考了jQuery 3.1参考手册中的部分内容并引用了其中的部分示例

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值