jquery选择器个人理解总结

	// id
	$("#myDiv") // 查找id为 myDiv 的元素
	
	/* 特殊字符示例
	<span id="foo:bar">foo:bar</span>
    <span id="foo[bar]">foo[bar]</span>
    <span id="foo.bar">foo.bar</span>
	*/
	// 查找含有特殊字符的元素 (基本用不到,了解一下)
    $("#foo\\[bar\\]")
    $("#foo\\:bar")
    $("#foo\\.bar")
	
	// 标签
	$("p") // 查找所有的p标签
	$("p").eq(0) // 选择下标为0的p标签

	// 类
	$(".myClass") // 查找class类名为 myClass 的元素
	
	// *
	$("*") // 匹配页面中所有的标签元素

	// 群组 selector1, selector2, selectorN
	$("p, #myDiv, .myClass") // 匹配任意一个类的元素

	// 后代
	$("form input") // 查找元素form下面的所有的input标签

	// 子代
	$(".maDiv > p") // 查找类名为maDiv下面的子级p标签 (需要注意的是,查找的仅仅是maDiv下面的子级p标签,而不是maDiv下面的所有p标签)
	
	// +
	$(".prev + .prev") // 匹配所有紧接在prev元素后类名为prev的元素 (注意是紧接在prev元素后的prev,隔断以下的不算,不包含第一个)

	// ~
	$(".prev ~ .prev") // 匹配prev元素之后所有类名为prev的兄弟元素, 第一个prev的同辈 (不包含第一个)

	// :first
	$("li:first") // 获取第一个li元素

	// :last
	$("li:last") // 获取最后一个li元素

	// :eq(index)
	$("tr:eq(1)") // 匹配一个给定索引值的元素,从 0 开始计数

	// :even
	$("tr:even") // 匹配所有索引值为偶数的元素,从0开始计数
	
	// :odd
	$("tr:odd") // 匹配所有索引值为奇数的元素,从0开始计数

	// :gt(index)
	$("tr:gt(0)") // 匹配所有大于给定索引值的元素
	
	// :lt(index)
	$("tr:lt(2)") // 匹配所有小于给定索引值的元素

	// :not(selector)
	$(".notDiv span:not(.notSpan)") // 查找类名为notDiv元素下不包含类为notSpan的所有span元素
	
	// :lant()
	$("p:lang(it)") // 匹配所有p标签lang属性为it或为it-开头的元素

	// :header
	$(":header") // 匹配 h1 ~ h6 的标题元素

	// :animated
	$("div:animated") // 匹配所有正在执行动画效果的元素
	/* 示例
	<div>animate</div>
    <button id="run">Run</button>
	*/
	$("#run").click(function(){
		// 给所有不在执行动画效果的div元素执行一个动画特效
        $("div:not(:animated)").animate({ marginLeft: "+=30" }, 1000);
    });
	
	// :focus
	$(":focus") // 查找具有focus方法的元素,如input,我们给input标签添加(autofocus="autofocus")属性使它自动获取焦点,这样我们控制台打印的时候就能看见啦!需要注意的是如果有多个(autofocus="autofocus")属性的元素,但其实只有第一个是有效果的,我们获取的其实是第一个有焦点的元素

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

	// :target (很少有用到,了解一下)
	$("p:target") // 选择hash形式url标识符相匹配的元素  例如,给定的URI https://example.com/#foo, $( "p:target" ),将选择<p id="foo">元素。
	
	// :contains(text)
	$("div:contains('John')") // 查找所有内容为John的div元素
	
	// :empty 匹配所有不包含子元素或者文本的空元素
	$("#air div:empty") // 查找 #air 下面不包含子元素或者空文本的div元素
	
	// :has
	$("div:has(p)") // 匹配包含p标签的div
	
	// :parent 
	$("div:parent") // 匹配含有子元素或者文本的div元素(不包含空元素)
	
	// :hidden 匹配所有不可见元素,或者type为hidden的元素
	$("td:hidden") // 查找隐藏的 td (注意visibility: hidden是查找不到的哟)
	$("input:hidden") // 查找type为hidden的input元素
	
	// :visible 匹配所有可见的元素
	$("div:visible") //查找可见的div元素 (这里的visibility: hidden是可以找到的)

	// [attribute] 匹配包含给定属性的元素
	$("div[id]") // 查找含有id属性的div元素

	// [attribute=value] 匹配给定的属性是某个特定值的元素
	$("div[id='myDiv']") // 查找id属性值为myDiv的div元素
	$("div[id=myDiv]") // 不要引号也是可以的
		
	// [attribute!=value] 匹配所有不含有指定的属性,或者属性不等于特定值的元素。
	$("div[id!=myDiv]") // 查找id属性值不等于myDiv的div元素

	// [attribute^=value] 匹配给定的属性是以某些值开始的元素
	$("p[class^=pr]") // 查找class属性值以pr开头的p元素

	// [attribute$=value] 匹配给定的属性是以某些值结尾的元素
	$("p[class$=ev]") // 查找class属性值以ev结尾的p元素

	// [attribute*=value] 匹配给定的属性是以包含某些值的元素
	$("p[class*=ev]") // 查找class属性值包含ev的p元素

	// [attrSel1][attrSel2][attrSelN] 复合属性选择器,需要同时满足多个条件时使用
	$("div[class=tab][index=1]") // 查找class属性值为tab, index属性值为1的div元素

	// :first-child 匹配所给选择器的第一个子元素 类似于:first,:first只匹配一个,:first-child可以匹配多个;例如有3个<ul><li></li><li></li></ul>,:first-child会匹配每一个ul下的第一个li元素
	$("ul li:first-child") // 匹配ul下的第一个li元素,反回数组 (注意,如果ul下的第一个子元素不是li,那么是匹配不到的)
	
	// :last-child 匹配所给选择器的最后一个子元素,跟:first-child同理
	$("ul li:last-child") // 匹配ul下的最后一个li元素,反回数组

	// :first-of-type 查找同级元素中找到的第一个指定的元素(包含嵌套中的第一个)
	/*
	<body>
		<span>span1</span>
		<span>span2</span>
		<div id="n1">
	        <span> n1-span1</span>
	        <span class="a">n1-span2</span>
	    </div>
	    <div id="n2">
	        <p>p</p>
	        <p><span>n2-p-span</span></p>
	        <span class="b">n2-span</span>
	    </div>
	</body>
	*/ 
	
	$("span:first-of-type") // 查找同级元素中找到的第一个指定的span元素(包含嵌套中的第一个span)
	
	// :last-of-type 查找同级元素中找到的最后一个指定的元素(包含嵌套),跟:first-of-type同理
	$("span:last-of-type")
	
	// :nth-child(index) 为每一个父元素匹配子元素,索引从1开始 (:nth-child从1开始的,而:eq()是从0算起的!常用的有:nth-child(index))、:nth-child(even)、:nth-child(odd)、:nth-child(2n+1)等
	$("ul li:nth-child(2)") // 查找每个ul下的第二个li标签
	
	// :nth-last-child(n) 为每一个父元素匹配子元素,计数从最后一个元素开始,索引从1开始,使用方法与:nth-child()同理
	$("ul li:nth-last-child(2)") // 查找每个ul下的倒数第二个li标签
	
	// :nth-last-of-type(n) 这个与:first-of-type差不多的道理,不过这个可以指定索引,从后往前,索引从1开始;(查找同级元素中找到的指定索引的元素)
	$("ul li:nth-last-of-type(2)") // 查找ul下找到的倒数第二个li元素(注意是找的倒数第二个,而不是倒数第二个)

	// :nth-of-type(n) 和上面同理,这个是正叙,索引也是从1开始
	$("ul li:nth-of-type(2)") 

	// :only-child 如果某个元素是父元素中唯一的子元素,那将会被匹配
	$("ul li:only-child") // 查找ul中作为唯一标签的li子元素 (li必须是唯一的标签)

	// :only-of-type 选择所有没有兄弟元素,且具有相同的元素名称的元素。
	$('ul li:only-of-type') // 查找ul中作为唯一标签的li子元素,感觉这个跟:only-child没区别
	
	/* form表单 ============================================================= */
	// :input 匹配所有 input, textarea, select 和 button 元素
	$(":input")

	// :text 匹配所有的单行文本框 <input type="text" />
	$(":text") // 查找type属性为text的input标签
	
	// :password 匹配所有密码框 <input type="password" />
	$(":password")
	
	// :radio 匹配所有单选按钮 <input type="radio" />
	$(":radio")

	// :checkbox 匹配所有复选框 <input type="checkbox" />
	$(":checkbox")

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

	// :image 匹配所有图像域 <input type="image" />
	$(":image")

	// :reset 匹配所有重置按钮 <input type="reset" />
	$(":reset")
	
	// :button 匹配所有按钮 即type="button",其它reset、submit等匹配不到
	$(":button")
	
	// :file 匹配所有文件域 <input type="file" />
	$(":file") 

	// :enabled 匹配所有可用元素 (!disabled) 
	$("input:enabled") // 查找没有disabled 或 !disabled的input元素

	// :disabled 匹配所有不可用元素 <input type="text" disabled />
	$("input:disabled")

	// :checked 匹配所有选中的元素复选框、单选框
	$("input:checked")
	
	// :selected 匹配所有选中的option元素,包括h5新增的多选
	$("select option:selected")

以上内容来自jquery中文文档,加上自己经过测试对部分选择器的理解与标注,方便以后忘记的时候便于理解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值