jQuery_02

一、常用方法

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>

jQuery_02

 

 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)不需要加双引号

 

上一篇:animate动画使用


下一篇:angular 过度动画