一、常用方法
1.1、addClass || removeClass
概述:它们两者是JQ函数库提供的。他们两者主要的作用是,可以给匹配节点添加类型或移除类名操作。
<script type="text/javascript"> //绑定事件 $('button:eq(0)').click(function(){ //给div添加类名 $("div").addClass('cur'); }); $("button:eq(1)").click(function(){ //div移除类名 $("div").removeClass("cur"); }); //链式语法:连续打点【从左到有】 $("button:eq(2)").click(function(){ $("div").html("我爱你").css({'width':100}).addClass('erha'); }); </script>
1.2、index
概述:它是JQ函数库提供一个常用方法。它主要的作用是可以获取到某一个匹配节点索引值。
<script type="text/javascript"> //index:获取匹配节点的索引值 console.log($(".cur").index()); </script>
1.3、each
概述:它也是jQuery函数库给我们提供方法。他们主要的作用是可以遍历全部匹配节点。
<script> $("li").each(function(index,element){ $(element).css({ "width":index * 10 + 50, }); }); </script>
each的function有两个参数,一个是index,表示当前匹配到节点的索引值,一个是element,在函数中匹配节点时要用element
二、节点关系方法
概述:在HTML骨架下,标签与标签之间是有嵌套关系。就导致出现父子节点、爷孙节点等关系。
jQuery函数库中给我们封装了很多节点关系方法。
2.1、parent
概述:它是jQuery函数库中提供一个方法,它主要的作用是可以获取到某一个匹配节点【父节点】。
$("li").parent().css({"background":"red"});
2.2、函数上下文【this】
概述:函数上下文【this】,如果在函数中出现(只能在函数体中使用)。
事件处理函数中下文this,就是当前这个触发事件元素。
<script> $("li").click(function(){ $(this).css({"background":"red"}); }); </script>
2.3、siblings
概述:它是jQuery函数库给我们提供节点关系方法。它主要的作用是可以获取到某一个匹配节点的姊妹节点。
说白了,就是同级元素。
<script> //siblings可以匹配当前所选节点的所有兄弟节点,如果传参数就是匹配指定的节点,不传参数就是匹配所有的兄弟节点 console.log($("p").siblings()); console.log($("p").siblings("p")); $("div").click(function(){ $("p").siblings("p").css({"background":"red"}); }); </script>
$(this).css({"background":"red"}).siblings().css({"background":"cyan"});
2.4、children
概述:它也是jQuery函数库提供一个方法。主要的作用是可以获取到某一个匹配节点的全部子节点。
<script> console.log($("div").children()); console.log($("div").children(".cur")); </script>
实战练习:折叠卡片
<script type="text/javascript"> //给新闻标题绑定单机事件 $("h3").click(function(){ //写的少,做的多---链式语法 $(this).siblings().slideDown(500).parent().siblings().children("p").slideUp(500); }); </script>
三、animate函数
3.1.animate的基本使用
用途:实现动画
语法格式:$(selector).animate(json,time,callback);
其中只有第一个参数json是必须的,json数据格式用来设置动画最终完成的属性样式(所有与颜色相关的样式都不能参与animate函数的变化);
第二个参数time是动画时间的设置【ms】;
第三个参数是当动画完成之后立即执行一次回调函数。
<script> $("div").animate({"left":1000, "top":500, "opacity":.3, },2000,function(){ console.log("动画函数结束后立即调用一次"); }); </script>
注:在用$选中标签时,要给标签加上双引号。
3.2,animate函数注意事项
一个匹配节点可以添加多个animate动画。
<script> $("div").animate({"left":200,},2000); $("div").animate({"top":200,},2000); $("div").animate({"left":0,},2000); $("div").animate({"top":0,},2000); </script>
一个匹配标签若添加了多个animate动画,则会按照添加顺序来一一执行animate函数。
3.3,动画积累问题
方法:用stop.(true)来解决
stop:终止当前函数积累的全部动画
语法格式:$(selector).stop(true).animate();
只能放在animate前面,链式语法顺序执行。
<script> $("button:eq(0)").click(function(){ $("div").stop(true).animate({"left":100}); }); $("button:eq(1)").click(function(){ $("div").stop(true).animate({"left":0}); }); </script>
3.4,传统轮播图
<!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> <link rel="stylesheet" href="css.css"> <script src = "jQuery.min.js"></script> </head> <body> <div> <ul> <li class = "cur"><img src="../images/1.jpg" alt=""></li> <li><img src="../images/2.jpg" alt=""></li> <li><img src="../images/3.jpg" alt=""></li> <li><img src="../images/4.jpg" alt=""></li> <li><img src="../images/5.jpg" alt=""></li> </ul> <button class = "lbtn"><</button> <button class = "rbtn">></button> <ol> <li class = "show">1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ol> </div> </body> </html> <script> var idx = 0; //左侧按钮单击事件 $(".lbtn").click(function(){ $("ul li:eq("+idx+")").css({"left":0}).stop(true).animate({"left":600},300); idx--; idx = idx<0?4:idx; $("ul li:eq("+idx+")").css({"left":-600}).stop(true).animate({"left":0},300); $("ol li:eq("+idx+")").addClass("show").siblings().removeClass("show"); }); //右侧按钮单击事件 $(".rbtn").click(function(){ $("ul li:eq("+idx+")").css({"left":0}).stop(true).animate({"left":-600},300); idx++; idx = idx>4?0:idx; $("ul li:eq("+idx+")").css({"left":600}).stop(true).animate({"left":0},300); $("ol li:eq("+idx+")").addClass("show").siblings().removeClass("show"); }); </script>
四、百度新闻导航
4.1、获取节点宽高的常用方法
<script> //width与height方法:可以获取到匹配节点的内容的宽高 console.log($("div").width()); console.log($("div").height()); //innerWidth与innerHeight方法:可以获取到匹配节点的内容+内边距的宽高 console.log($("div").innerWidth()); console.log($("div").innerHeight()); //outerWidth与outerHeight方法:默认值为false:可以获取到匹配节点的内容+内边距+外边框的宽高,若设置值为true则可获取到内容+内边距+外边框+外边距的宽高 console.log($("div").outerWidth()); console.log($("div").outerHeight()); console.log($("div").outerWidth(true)); console.log($("div").outerHeight(true)); </script>
4.2,其他节点关系方法
4.2.1next||nextAll
可以获取到下一个或者后面所有的姊妹节点。
4.2.2prev||prevAll
可以获取到前面一个或者前面所有的姊妹节点。
<script> //绑定鼠标移上事件 $("li").mouseenter(function(){ var sum = 300; $(this).prevAll().each(function(index,element){ sum += $(element).innerWidth(); }); $(".cur").stop(true).animate({"left":sum,"width":$(this).innerWidth()},1000); }); //绑定鼠标移除事件 $("div").mouseleave(function(){ $(".cur").stop(true).animate({"left":300,"width":$("li:eq(0)").innerWidth},1000); }); </script>
注意事项:$(this)与$(element)不需要加双引号