jQuery 系列 | 第二讲 jQuery 选择器

1. 基本选择器

  • id 选择器
	<div id="box1"></div>
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">		
		var ele = $('#box1'); // 选择id为box1的第一个元素
		ele.css({
			'background-color' : 'gray',
			'width': '100px',
			'height': '100px'
		});
	</script>
  • 类选择器
	<div class="box2"></div>
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">		
		var ele = $('.box2'); // 选择所有class为box2的元素
		ele.css({
			'background-color' : 'green',
			'width': '100px',
			'height': '100px'
		});
	</script>
  • 标签选择器
	<div>第一个div</div>
	<div>第二个div</div>
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">		
		var ele = $('div'); // 选择所有的div元素
		ele.css({
			'background-color' : 'green',
			'width': '100px',
			'height': '100px'
		});
	</script>
  • 通配符选择器
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">		
		var ele = $('*'); // 选择所有元素
		ele.css({
			'background-color' : 'green',
			'width': '100px',
			'height': '100px'
		});
	</script>
  • 并集选择器
	<div id="box1">第一个div</div>
	<div id="box2">第二个div</div>
	<div class="box3">第二个div</div>
	<p></p>
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">		
		var ele = $('#box1,.box3,p'); // 选择所有的div元素
		ele.css({
			'background-color' : 'green',
			'width': '100px',
			'height': '100px'
		});
	</script>

2. 层级选择器

  • 后代选择器 vs. 子代选择器
<body>
	<ol>
		<li>北京</li>
		<li>上海</li>
		<li>广州</li>
		<ul>
			<li>苹果</li>
			<li>香蕉</li>
			<li>橘子</li>
		</ul>
	</ol>

	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">

		$("ol li").css({  // 后代选择器(包含儿子、孙子、重孙、...)
			'background-color': 'red'
		});

		$("ul>li").css({  // 子代选择器(仅仅包含儿子)
			'background-color': 'green'
		});

	</script>
</body>

运行效果如下图
在这里插入图片描述

  • 兄弟选择器 vs. 紧邻选择器
<body>
	<div>桌子</div>
	<p>椅子</p>
	<p>柜子</p>
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">

		$("div~p").css({  // 兄弟选择器(选择div后面所有的p元素)
			'background-color': 'red'
		});

		$("div+p").css({  // ;紧邻选择器(选择div后面紧邻的第一个p元素)
			'background-color': 'green'
		});
	</script>
</body>

运行效果如下图
在这里插入图片描述

3. 属性选择器

<body>
	<ul>
		<li id="beijing">北京</li>
		<li id="shanghai">上海</li>
		<li>广州</li>
		<li id="shenzhen">深圳</li>
	</ul>

	<form action="" method="post">
	    <input name="username1" type='text' value="张三" />
	    <input name="username2" type='text' value="李四" />
	    <input name="username3" type='text' value="王五" />
	    <br>
	    <input name="1password" type='text' value="123" />
	    <input name="2password" type='text' value="123" />
	    <input name="3password" type='text' value="123" />
	    <br>
	    <button class="btn-log">普通按钮</button>
	    <button class="warn-btn">警告按钮</button>
	    <button class="btn-error">错误按钮</button>
	    <br>
    </form>

	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">

		$("li[id]").css({  // 标签名[属性名], 选择所有含有id属性的标签名为li的元素
			'background-color': 'red'
		});

		$("li[id=beijing]").css({  // 标签名[属性名=属性值], 选择所有含有id属性且值为beijing的标签名为li的元素
			'background-color': 'green'
		});

		$("li[id!=shenzhen]").css({  // 标签名[属性名!=属性值], 选择所有含有id属性且值不为shenzhen的标签名为li的元素
			'background-color': 'green'
		});


		//查找包含属性名为name且属性值以username开头的input元素
        $('input[name^=username]').css('background','gray');

        //查找包含属性名为name且属性值以password结尾的input元素
        $('input[name$=password]').css('background','yellow');
        
        //查找包含属性名为class且属性值包含btn的input元素
        $('button[class*=btn]').css('background','pink')
	</script>
</body>

在这里插入图片描述

4. 过滤选择器(通过冒号实现)

  • :empty 【选择不包含子节点的元素】
  • :parent【选择包含子节点的元素】
<body>
	<div id="box1"></div>
	<div id="box2"> 我有文本内容(文本节点)</div>
	<div id="box3"> <span>我有子标签元素 (元素节点)</span></div>
	<script src="js/jquery-3.4.0.js"></script>

	<script type="text/javascript">
		$("div:empty").css({
			'background-color':'green',
			'width':'300px', 
			'height':'50px', 
			'margin-top':'10px'});
		$("div:parent").css({
			'background-color':'gray', 
			'width':'300px', 
			'height':'50px', 
			'margin-top':'10px'});
	</script>
</body>
  • :contains(text) 【选取子节点包含为text字符串的元素】
<body>
	<div id="box1"> 我喜欢阅读!</div>
	<div id="box2"> 学习 jQuery!</div>
	<div id="box3"> <span>我喜欢旅行!</span></div>
	<script src="js/jquery-3.4.0.js"></script>

	<script type="text/javascript">
		$("div:contains(喜欢)").css({
			'background-color':'green',
			'width':'300px', 
			'height':'50px', 
			'margin-top':'10px'});
	</script>
</body>
  • :has(selector) 【选取包含子元素且子元素满足给定的selector条件的元素】
  • 与:parent的区别:parent只要包含子元素就可以,:has(selector)不仅要包含子元素,而且子元素还必须满足给定的条件。
<body>
	<div id="box1"></div>
	<div id="box2"> 我有文本内容(文本节点)</div>
	<div id="box3"> <span>我有子标签元素 (元素节点)</span></div>
	<script src="js/jquery-3.4.0.js"></script>
	<script type="text/javascript">
		$("div:has(span)").css({
			'background-color':'red', 
			'width':'300px', 
			'height':'50px', 
			'margin-top':'10px'});
	</script>
</body>
  • 针对表单元素的过滤选择器
    在这里插入图片描述

5. 过滤选择器(通过方法实现)

  • 下一个元素
$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#id2")
  • 上一个元素
$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#id2")
  • 父亲元素
$("#id").parent()
$("#id").parents()  // 查找当前元素的所有的父辈元素
$("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到满足匹配的元素为止
  • 儿子元素
$("#id").children();
  • 兄弟元素
$("#id").siblings();
  • 查找满足匹配条件的后代元素
$("div").find("span") // 等价于$("div span"), 后代选择器
  • 过滤出满足匹配条件的元素
$("div").filter(".cls") // 等价于$("div.cls"), 交集选择器
  • 其他方法
.first() // 获取匹配的第一个元素
.last()  // 获取匹配的最后一个元素
.not()   // 从匹配元素的集合中删除与指定表达式匹配的元素
.has()   // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
.eq()    // 索引值等于指定值的元素

6. 更多

参看 http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp

猜你喜欢

转载自blog.csdn.net/ry1026/article/details/89342951