原生JS获取元素方式很多,很杂,而且兼容性情况不一致,因此jQuery给我们做了封装,使获取元索统一标准。
$( "选择器”)
//里面选择器直接写CSS选择器即可,但是要加引号
层级选择器
隐式迭代
遍历内部DOM元素(伪数组形式存储)的过程就叫做隐式迭代
。
简单理解:给匹配到的所有元素进行循环遍历,执行相应的方法,而不用我们再进行循环,简化我们的操作,方便我们调用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="jquery.min.js"></script>
</head>
<body>
<div>111</div>
<div>111</div>
<div>111</div>
<div>111</div>
<ul>
<li>222</li>
<li>222</li>
<li>222</li>
</ul>
<script>
//1、获取四个div元素
console.log($("div"));
//2、给四个div设置背景颜色为粉色 jquery对象不能使用style
$("div").css("background","pink");
//3、隐式迭代就是把匹配的所有元素内部进行遍历循环,给每一个元素添加CSS这个方法
$("ul li").css("color","red");
</script>
</body>
</html>
筛选选择器
这类选择器都带冒号
筛选选择器(方法)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="jquery.min.js"></script>
</head>
<body>
<ol>
<li>111</li>
<li>111</li>
<li class="item">111111</li>
<li>111</li>
</ol>
<ul>
<li>2222</li>
<li>2222</li>
<li>2222</li>
<li>2222</li>
</ul>
<div class="current">有current</div>
<div>没有current</div>
<script>
//注意都是方法,带括号
$(function(){
//1、兄弟元素siblings除了自身元素之外的所有亲兄弟
$("ol .item").siblings("li").css("color","red");
//2、第n个元素
var index = 2;
$("ul li").eq(index).css("color","blue");
//3、判断是否有某个类名
console.log($("div:first").hasClass("current"));
})
</script>
</body>
</html>
jquery的排他思想
想要多选一的效果,排他思想:当前元素设置样式,其余的兄弟元素清除样式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="jquery.min.js"></script>
</head>
<body>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<script>
$(function(){
//1、隐式迭代,给所有的按钮都绑定了点击事件
$("button").click(function(){
//2、当前的元素变化背景颜色
$(this).css("background","red");
//3、其余的兄弟去掉背景颜色 隐式迭代
$(this).siblings("button").css("background","");
});
})
</script>
</body>
</html>
jquery的链式编程
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="jquery.min.js"></script>
</head>
<body>
我的
<button>快速</button>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<button>快速</button>
<script>
$(function(){
//1、隐式迭代,给所有的按钮都绑定了点击事件
$("button").click(function(){
//1、我的颜色为红色,我的兄弟颜色为空
$(this).css("color","red").siblings().css("color","");
//2、我的兄弟变为红色,我本身不变颜色
$(this).siblings().css("color","red");
//3、给我的兄弟的爸爸body变化颜色
$(this).siblings().parent().css("color","blue");
});
})
</script>
</body>
</html>