目录
一个大型的简单的第三方类库
类库:把我们所有常用的操作封装到了一起,我们需要用的时候直接使用就可以
注意:jquery对dom操作进行了完善得封装,把我们常用的dom操作全都封装到了一起,包括我们的各种元素操作以及ajax操作
<script src="jquery.js"></script>
注意:当你引入jquery文件以后会在全局暴露2个变量名,这两个变量名一模一样
- <script>
- console.log($);
- console.log(jQuery);
- </script>
语法:$('选择器')
- <script>
- //id选择器
- console.log($('#box'));
- //类名选择器
- console.log($('.a'));
- //标签名选择器
- console.log($('li'));
- //结构伪类选择器
- console.log($('li:nth-child(odd)'));
- </script>
通过这种方法我们便可以获取页面上的任何一个元素了
含义:对jquery选择器获取到的元素进行二次筛选
语法:$('选择器').筛选器名称()
- <body>
- <ul>
- <li>1</li>
- <li>2</li>
- <li>3</li>
- <li>4</li>
- <li>5 <i>子2级</i></li>
- <i>子级i</i>
- <span>我是span</span>
- <li>6</li>
- <li>7 <p><i>子3级</i></p></li>
- <li>8</li>
- <li>9</li>
- <li>10</li>
- </ul>
- </body>
- <script>
- //first()
- console.log($("li").first());//选择的是所有li里的第一个
- //last()
- console.log($("li").first());//选择的是所有li里的最后一个
- //eq(索引)——注意:索引是从0开始依次加一
- console.log($("li").eq(3));//选择的是索引第三个li
- //next()
- console.log($("span").next());//拿到的是span的下一个元素
- //nextAll()
- console.log($("span").nextAll());//拿到的是span标签后的所有兄弟元素
- //prev()
- console.log($("span").prev());//拿到的是span的前一个元素
- //prevAll()
- console.log($("span").prevAll());//拿到的是span前的所有兄弟元素
- //parent()
- console.log($("span").parent());//拿到的是span的父元素ul标签
- //parents()
- console.log($("span").parents());//获取的是该元素的所有父级结构,逐层获取,直到html标签为止
- //siglings()
- console.log($("span").siblings());//拿到该元素的所有兄弟元素
- //find(选择器)
- console.log($("ul").find("i"));//找到该元素的所有后代中满足选择器要求的元素-3个i都找到了
- </script>
- <body>
- <div>hello
- <p>你好,世界</p>
- world
- </div>
- <input type="text" value="hello">
- </body>
- <script>
- //html()
- //获得该div下所有的结构,以字符串的形式返回等价于js中的innerHTML
- console.log($("div").html());
- //html()设置,将div元素的内容改为要设置的内容(其可以识别并解析html结构字符串)
- $("div").html("<h1>我是用来设置的元素</h1>")
-
- //text()
- //等价于js中的innerText
- //拿到该元素下的所有文本内容
- console.log($("div").text());
- //text()设置,将div元素的内容改为要设置的内容(其不可以识别并解析html结构字符串)
- $("div").text("<h1>我是用来设置的元素</h1>");
-
- //val()
- //等价于js中的value属性
- console.log($("input").val());
- //val()设置
- $("input").val("我是后来设置的内容")
- </script>
- <body>
- <div class="a b c d"></div>
- </body>
- <script>
- //addClass()
- //语法:元素集合.addClass(需要添加的类名)
- $("div").addClass('e')//发现浏览器div多了个e类名
- //removeClass()
- $("div").removeClass("d")//浏览器的d类名被删除
- //toggleClass()
- //语法:元素集合.toggleClass(你要切换的类名)
- //切换:如果本身有这个类名就是删除,如果本身没有这个类名就是添加
- $("div").toggleClass("d")//因为没有d类名,所以添加
- </script>
注意:jquery为我们提供了css()方法专门用来操作样式
- <body>
- <div style="width: 100px; ;"></div>
- </body>
- <style>
- div{
- height: 200px;
- background: skyblue;
- }
- </style>
- <script>
- //css获取样式
- //注意:可以获取元素的行内样式,也可以获取到元素的非行内样式
- //语法:元素集合.css(你要获取的样式名称)——返回值:该样式的样式值
- console.log($("div").css("width"));//行内样式
- console.log($("div").css("height"));//非行内样式
-
- //css设置样式
- //语法:元素集合.css(样式名,样式值)
- //注意:当你需要给元素设置样式值为px单位的时候,可以省略单位不写
- $("div").css("width","300px")
- $("div").css("background","red")
-
- //css批量设置样式
- //语法:元素集合.css({你所有需要设置的样式}),注意:里面以key:value形式设置,多个属性之间用,隔开
- $("div").css({"width":"300px","height":"500px","opacity":"0.68","background":"green"})
- </script>
- <body>
- <div id="box" hello="world">我是个弟弟</div>
- </body>
- <script>
- //attr()
- //可以进行设置和元素属性,一般用于元素的自定义属性,attr操作的所有属性都会直接出现在元素的标签身上
- //语法:元素.attr(你要获取的属性名) 返回值:该属性名对应的属性值
- console.log($("div").attr("hello"));//可以
- console.log($("div").attr("id"));//可以
-
- //attr()设置
- $("div").attr("a","100")//可以
- $("div").attr("id","b")//可以
-
- //removeAttr()
- //对元素进行删除操作
- //语法:元素集合.removeAttr(你要删除的属性名)
- $("div").removeAttr("hello")//可以
- $("div").removeAttr("id")//可以
-
- //prop()
- //获取和设置元素属性
- //注意:当设置原生属性时,会直接响应在元素标签身上;
- //当设置元素自定义属性时,不会直接响应在元素标签身上,会响应在元素对象身上
- //注意:prop方法不能获取到元素标签身上的自定义属性,只能获取到prop方法自己设置的自定义属性
- //prop()设置——语法:元素集合.prop(属性名,属性值)
- $("div").prop("id","container")
- $("div").prop("b","200")//其自定义属性不在标签上显示,而是在divdom对象中可以找到
- //prop()获取——语法:元素集合.prop(你要获取的属性名),返回值为该属性对应的值
- console.log($("div").prop("id"));//可以
- console.log($("div").prop("a"));//不可以
- console.log($("div").prop("b"));//可以
-
- //removeprop()
- //用来删除元素属性的方法,其不能删除原生属性,其只能删除prop方法定义的自定义属性
- //语法:元素集合.removeProp(你要删除的属性名)
- $("div").removeProp("id")//不可以
- $("div").prop("b","300")
- console.log($("div"));
- $("div").removeProp("b")
- console.log($("div"));
- </script>
- <body>
- <div></div>
- </body>
- <style>
- * {
- margin: 0;
- padding: 0;
- }
-
- div {
- width: 300px;
- height: 300px;
- padding: 20px;
- border: 20px dashed red;
- margin: 20px;
- background: skyblue;
- background-clip: content-box;
- display:none;
- }
- </style>
- <script>
- //获取元素尺寸
- //width()和height()
- //获取到的是元素内容的尺寸
- console.log($("div").width());
- console.log($("div").height());
-
- //innerWidth()和innerHeight()
- //获取到的是元素内容+内边距的尺寸
- console.log($("div").innerWidth());
- console.log($("div").innerHeight());
-
- //outerWidth()和outerHeight()
- //获取到的是元素内容+内边距尺寸+边框
- console.log($("div").outerWidth());
- console.log($("div").outerHeight());
-
- //outerWidth(true)和outerHeight(true)
- //获取的是元素内容+内边距尺寸+边框+设置的外边距
- console.log($("div").outerWidth(true));
- console.log($("div").outerHeight(true));
- </script>
注意:
- <body>
- <div>
- <p>
- <span></span>
- </p>
- </div>
- </body>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- div{
- width: 500px;
- height: 500px;
- margin: 30px;
- background: skyblue;
- overflow: hidden;
- }
- p{
- width: 300px;
- height: 300px;
- margin: 30px;
- background: orange;
- overflow: hidden;
- position: relative;
- }
- span{
- display: block;
- width: 100px;
- height: 100px;
- margin: 30px;
- background: pink;
- position: absolute;
- left: 40px;
- top: 40px;
- }
- </style>
- <script>
- //offset()
- //获取元素相对于页面左上角的坐标位置
- //注意:返回值是一个对象数据类型,{top:yyy,left:xxx}
- console.log($("div").offset());
-
- //position()
- //获取到的就是元素的定位位置
- //注意:如果你设置的是right和bottom,则会自动转换成left和top的值给到你
- console.log($("span").position());
- console.log($("p").position());
- </script>
- <body>
- <div>我是div标签
- <p>我是div的p标签</p>
- </div>
- </body>
- <style>
- div{
- width: 500px;
- height: 500px;
- background: red;
- }
- p{
- width: 300px;
- height: 300px;
- background: orange;
- }
- </style>
- <script>
- //on()方法绑定事件
- //基础绑定事件=>语法:元素集合.on("事件类型","事件处理函数")
- $("div").on('click',function(){console.log("我是div的点击事件");})
- //事件委托绑定事件=>语法:元素集合('事件类型',选择器,事件处理函数)
- //当点击p的时候执行事件处理函数就会把事件委托给div
- $("div").on('click','p',function(){console.log("事件委托");})
- //批量绑定事件
- //语法:元素集合.on({事件类型1:处理函数,事件类型2:处理函数})
- //注意:这种方式不能进行事件委托
- $("div").on({"click":function(){console.log("点击事件")},"mouseover":function(){console.log("鼠标移入");}})
-
- //one(),和on方法绑定事件方式一样的,区别:one方法绑定的时间只能执行一次
- $("div").one("click",function(){console.log("基础绑定事件");})
- //事件委托
- $("div").one("click","p",function(){console.log("基础事件委托");})
- //也支持批量绑定
-
- //hover()
- //语法:元素集合.hover(移入时触发的函数,移出时触发的函数)
- //当你只传递一个函数的时候会在移入移出都触发
- //其不能做事件委托
- $("div").hover(function(){console.log("移入");},function(){console.log("移出");})
-
- //常用事件函数
- //把我们常用的事件单独做成了事件函数,我们通过调用这些事件函数来达到绑定事件的效果
- //eg:click(),mouseover(),mouseout(),change()
- $("div").click(function(){console.log("click");})
- </script>
- <body>
- <div>我是div标签</div>
- </body>
- <script>
- function handlerA(){console.log("我是handlerA函数");}
- function handlerB(){console.log("我是handlerB函数");}
- function handlerC(){console.log("我是handlerC函数");}
- $("div").click(handlerA).click(handlerB).click(handlerC)
- //off()事件解绑
- //解绑全部事件处理函数:元素集合.off(事件类型)
- //其会把div的所有click事件对应的所有事件处理函数全部移除
- $("div").off('click')
- //解绑指定的事件处理函数:元素集合.off(事件类型,要解绑的事件处理函数)
- $("div").off("click",handlerB)
-
- //trigger()事件触发
- //使用代码的方式来触发事件的
- //语法:元素集合.trigger(事件类型)
- //注意:只有绑定了事件才能触发
- $("div").trigger("click")
- </script>
- <body>
- <button>show</button>
- <button>hide</button>
- <button>toggle</button>
- <div></div>
- </body>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- div{
- width: 500px;
- height: 500px;
- background: skyblue;
- }
- </style>
- <script>
- //基本动画有3个
- //1.show()显示
- //2.hide()隐藏
- //3.toggle()切换(本身如果是显示的就隐藏,本身如果是隐藏的就显示)
- //对于以上3个运动函数有共同的运动参数
- //1.运动的时间
- //2.运动的曲线
- //3.运动的回调函数
- // 基本动画
- $("button:nth-child(1)").click(function(){
- //执行show动画
- $("div").show(1000,"linear",function(){console.log("show");})
- })
- $("button:nth-child(2)").click(function(){
- //执行hide动画
- $("div").hide(1000,"linear",function(){console.log("hide");})
- })
- $("button:nth-child(3)").click(function(){
- //执行toggle动画
- $("div").toggle(1000,"linear",function(){console.log("toggle");})
- })
- </script>
(就和上面就动画形式不一样)
- <body>
- <button>slideDown</button>
- <button>slideUp</button>
- <button>alideToggle</button>
- <div></div>
- </body>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- div{
- width: 500px;
- height: 500px;
- background: skyblue;
- }
- </style>
- <script>
- //折叠有3个
- //1.slideDown()显示
- //2.slideUp()隐藏
- //3.slideToggle()切换(本身如果是显示的就隐藏,本身如果是隐藏的就显示)
- //对于以上3个运动函数有共同的运动参数
- //1.运动的时间
- //2.运动的曲线
- //3.运动的回调函数
- // 基本动画
- $("button:nth-child(1)").click(function(){
- $("div").slideDown(1000,"linear",function(){console.log("slideDown");})
- })
- $("button:nth-child(2)").click(function(){
- $("div").slideUp(1000,"linear",function(){console.log("slideUp");})
- })
- $("button:nth-child(3)").click(function(){
- $("div").slideToggle(1000,"linear",function(){console.log("slideToggle");})
- })
- </script>
- <body>
- <button>fadeDown</button>
- <button>fadeUp</button>
- <button>fadeToggle</button>
- <button>fadeTo</button>
- <div></div>
- </body>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- div{
- width: 500px;
- height: 500px;
- background: skyblue;
- }
- </style>
- <script>
- //1.fadeIn()显示
- //2.fadeOut()隐藏
- //3.fadeToggle()切换(本身如果是显示的就隐藏,本身如果是隐藏的就显示)
- //对于以上3个运动函数有共同的运动参数
- //1.运动的时间
- //2.运动的曲线
- //3.运动的回调函数
- // 4fadeTo(运动时间,指定的透明度,运动曲线,运动结束的回调)
- // 渐隐渐显
- $("button:nth-child(1)").click(function(){
- //执行show动画
- $("div").fadeIn(1000,"linear",function(){console.log("fadeIn");})
- })
- $("button:nth-child(2)").click(function(){
- $("div").fadeOut(1000,"linear",function(){console.log("fadeOut");})
- })
- $("button:nth-child(3)").click(function(){
- $("div").fadeToggle(1000,"linear",function(){console.log("fadeToggle");})
- })
- $("button:nth-child(4)").click(function(){
- //运动到指定的透明度
- $("div").fadeTo(1000,0.3,"linear",function(){console.log("fadeTo");})
- })
- </script>
- <body>
- <button>开始动画</button>
- <div></div>
- </body>
- <style>
- div{
- width: 300px;
- height: 300px;
- background: skyblue;
- }
- </style>
- <script>
- //综合动画
- //animate()
- //1.要运动的样式,以一个对象数据类型传递
- //2.运动时间
- //3.运动曲线
- //4.运动结束的回调函数
- $("button").click(function(){
- //利用animate函数来实现运动
- $("div").animate({
- width:500,
- height:600
- },1000,"linear",function(){console.log("运动结束了");})
- })
- </script>
注意:
- <body>
- <button class="a">开始动画</button>
- <button class="b">停止动画</button>
- <button class="c">结束动画</button>
- <div></div>
- </body>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- div{
- width: 500px;
- height: 500px;
- background: skyblue;
- }
- </style>
- <script>
- //结束动画
- //需要用到运动结束函数stop()
- //当任何一个元素执行了stop方法以后,会立即结束当前的所有运动,目前运动到什么位置就停在什么位置
-
-
- $(".a").click(function(){
- //利用结束动画书写动画函数
- //每一次触发的时候,就会把之前的动画停止下来,只执行本次最新的动画
- $("div").stop().toggle(2000)
- })
- $(".b").click(function(){
- $("div").stop()
- })
-
- //finish()
- //任何一个元素执行了finally方法后会立即结束当前的所有运动,直接去到动画的结束位置
- $(".c").click(function(){
- $("div").finish()
- })
- </script>
- <script>
- //jquery的ajax请求不是操作dom不需要依赖选择器去获取元素,他的使用是直接jquery或者$变量来使用
- //语法:$.ajax({本次发送ajax的配置项})
- //配置项
- //1.url:必填,表示请求地址
- //2.method:选填,默认是get,表示请求方式
- //3.data:选填,默认是 "",表示携带给后端的参数
- //4.async:选填,默认是true,表示是否异步
- //5.success:选填,请求成功的回调函数
- //6.error:选填,请求失败的回调函数
- $.ajax({
- url:"http://localhost:8888/test/first",
- method:"post",
- data:{name:"前端",age:18},
- async:true,
- success:function(res){console.log(res);},//res就是后端响应的结果
- })
- </script>