jQuery系列3---动画和ajax

一、显示和隐藏

hide():隐藏 在HTML文档中,是把一个元素的css属性display设置为none

show():显示。把隐藏的元素显示出来。把css的display属性设置为block或inline或者除了none之外的其他值。到底是什么状况,要看隐藏之前的状态。隐藏前是什么状态就显示为什么状态

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0px;
                padding: 0px;
            }       
            .box {
                width: 300px;
                height: 300px;
                background-color: pink;
                border: 1px dashed blue;
            }
        </style>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function() {
                var $box = $(".box");
                $("button:eq(0)").click(function() {
                    //显示元素。  
                    $box.show();
                })
                $("button:eq(1)").click(function() {
                    //隐藏元素
                    $box.hide();
                })
            })
        </script>
    </head>
    <body>
        <div>
            <button>显示</button>
            <button>隐藏</button>
        </div>
        <div class="box"></div>
    </body>
</html>

show和 hide方法也可以传入表示时间的参数。意思是说,从显示到隐藏,或隐藏到显示经过的事件。在这个过程中,元素的透明度会变大或变小,尺寸会变小或变大.

show(时间)、hide(时间)

JQuery还提供了3个值:slow(表示600ms), nomal(表示400ms),fast(表示200ms)

$box.show("slow");
$box.show(2000);  // 1000ms
$box.hide("slow");
$box.hide(2000);

二、淡入和淡出

fadeIn()和 fadeOut() 淡入和淡出。只改变透明度,不改变尺寸。

参数和 show、hide 一致

$box.fadeOut(2000);//淡出
$box.fadeIn(2000); //淡入

三、展开和收起

slideUp()和 slideDown()。收起和展开。通过改变元素的尺寸

$box.slideUp(1000);    //收起
$box.slideDown(1000); //展开

四、动画其他方法和属性

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0px;
                padding: 0px;
            }       
            .box {
                width: 300px;
                height: 300px;
                background-color: pink;
                border: 1px dashed blue;
            }
        </style>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function() {
                var $box = $(".box");
                $("button:eq(0)").click(function() {

                    //toggle()专门用于切换元素的状态,如果是隐藏的就显示,如果是显示的就隐藏。可以替换hide和shouw
                    $box.toggle(2000);
                })
                $("button:eq(1)").click(function() {
                    //用于替换fadeIn和fadeOut
                    $box.fadeToggle(2000);
                })
                $("button:eq(2)").click(function() {
                    //用于替换slideUp和slideDown
                    $box.slideToggle(2000);
                })
                $("button:eq(3)").click(function() {
                    //改变透明度到指定透明度值。只改变透明度
                    $box.fadeTo(2000, 0.3)
                })
            })
        </script>
    </head>
    <body>
        <div>
            <button>显示和隐藏</button>
            <button>淡入或淡出</button>
            <button>展开和收缩</button>
            <button>改变透明度到指定的值</button>
        </div>
        <div class="box"></div>
    </body>
</html>

五、自定义动画

​ 仅仅上面的动画并不能满足我们的需求,如个想要更复杂的动画效果,就需要自定义动画。自定义动画只需要用到一个函数:animate(params[, speed][,easing][, callback])

参数1:一个包含样式的属性和值的映射对。可以有多个映射。 必须

参数2:可选。速度

参数3:动画算子(字符串。jquery默认只有linear和swing)。更复杂的需要第三方支持。

务必要先导入jquery再导入动画算子插件。

参数4:回调函数。可选。表示动画执行完毕之后然后再执行的函数。

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0px;
                padding: 0px;
            }   
            .box {

                width: 300px;
                height: 300px;
                background-color: pink;
                border: 1px dashed blue;
                position: absolute;     
            }
        </style>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function() {
                var $box = $(".box");
                $("button:eq(0)").click(function () {
                    //自定义动画
                    $box.animate({left:"800px"}, 2000);

                });
                $("button:eq(1)").click(function () {
                    //自定义动画
                    $box.animate({top:"500px"}, 2000);
                });
                $("button:eq(2)").click(function () {
                    //构成了动画流,按照动画添加的顺序执行。
                    $box
                    .animate({left:"800px"}, 500)
                    .animate({top:"500px"}, 2000)
                    .fadeOut();
                });
                $("button:eq(3)").click(function () {
                    //同时执行多个属性的动画
                    $box
                    .animate({left:"800px", top:"500px"}, 5000)
                });
            })
        </script>
    </head>
    <body>
        <div>
            <button>向右</button>
            <button>向下</button>
            <button>先向右,再向下</button>
            <button>同时向右和向下</button>
        </div>
        <div class="box"></div>
    </body>
</html>

六、判断动画是否在执行和停止动画

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0px;
                padding: 0px;
            }       
            .box {          
                width: 300px;
                height: 300px;
                background-color: pink;
                border: 1px dashed blue;
                position: absolute;         
            }
        </style>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function() {
                var $box = $(".box");
                $("button:eq(0)").click(function () {
                    $box.animate({left:"800px"}, 5000)
                    .animate({top:"600px"}, 6000);
                });
                $("button:eq(1)").click(function () {
                    //判断动画是否在执行
                    if($box.is(":animated")){
                        alert("动画正在执行");
                    }else{
                        alert("动画没有在执行");
                    }
                });
                $("button:eq(2)").click(function () {
                    //不传入任何参数:表示结束正在执行的动画,开始执行动画队列中的下一个动画。
//                  $box.stop();
                    /*stop有两个可选参数:
                        参数1:true/false true表示立即清除所有动画队列中的所有动画,并结束当前动画。已经执行到了什么
                                地方就停在什么地方。 默认是false,表示停止当前动画,并开始动画队列中的下一个。
                        参数2:true/false:  表示结束动画的时候,是否直接到达当前动画的末尾状态。true表示直接去当前动画的末尾状态,f
                                false,表示维持当前状态

                    */
                    $box.stop(true, true);
                });

            })
        </script>
    </head>
    <body>
        <div>
            <button>开始执行动画</button>
            <button>判断动画是否在执行</button>
            <button>停止动画</button>
        </div>
        <div class="box"></div>
    </body>
</html>

七、AJAX

​ 原生JavaScript使用AJAX相对比较繁琐,JQuery对AJAX做了封装,使用起来更简单。

​ 对AJAX一共封装了6个方法,分成三层。

​ 最底层:$.ajax()

​ 第二层:$.load()、$.get()、$.post()

​ 第三层:$.getScript()、$.getJson()

第二层的方法使用最多最广泛

7.1 load方法

.load(url, [data], [callback])

url:待装入 HTML 网页网址。

data:发送至服务器的 key/value 数据。在jQuery 1.3之后也可以接受一个字符串了。可选

callback:载入成功时回调函数。可选

注意:默认使用 GET 方式 - 传递附加参数时自动转换为 POST 方式

7.1.1 加载静态HTML页面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function () {
                $("div button").click(function () {
                    //加载指定的url资源,并直接把加载的内容插入到 .content元素中。如果.content中原来有内容,则
                  //会覆盖原来的内容。 默认get请求。如果添加了第二个参数,则会自动使用post请求
                    $("#content").load("html_data.html");
                })
            })
        </script>
    </head>
    <body>
        <div>
            <button>使用ajax加载静态页面到下面的div中</button>
        </div>
        <div id="content"></div>
    </body>
</html>

7.1.2 筛选添加的内容

​ 加载的数据,我们也可以筛选出我们需要的数据,而不用全部填充到元素中。

只需要在url的后面使用空格隔开,添加我们合适的选择器

//内容加载完成后,只会把h1元素和id是#p的元素添加到#content中,其他的则不会
$("#content").load("html_data.html  h1,#p");

7.1.3 回调函数

​ load方法的最后一个参数是回调函数,当请求完成后总会回调这个函数,不管请求是否成功。

$("#content").load("html_data.html  h1,#p", function function_name (response,status,s) {
    //response - 包含来自请求的结果数据
    //status - 包含请求的状态("success", "notmodified", "error", "timeout" 或 "parsererror")
    //xhr - 包含 XMLHttpRequest 对象
    alert("加载完毕");
    console.log(response + "\n" + status + "\n" + xhr);
});

7.2 get方法和post方法

load一般用来读取静态html页面(动态也可以)。如果想方便传递数据到服务器,更多的使用get或post。

load方法是 jQuery 对象 的方法,而get和post方法是JQuery中的全局函数,所以可以直接使用$.get()和$.post()来调用

$.get(url, data, success(data,textStatus,xhr), dataType)

$.post(url, data, success(data, textStatus, xhr), dataType)

参数描述
url必需。规定将请求发送的哪个 URL。
data可选。规定连同请求发送到服务器的数据。
success(response,status,xhr)可选。规定当请求成功时运行的函数。额外的参数:response - 包含来自请求的结果数据status - 包含请求的状态xhr - 包含 XMLHttpRequest 对象
dataType可选。规定预计的服务器响应的数据类型。默认地,jQuery 将智能判断。可能的类型:”xml”“html”“text”“script”“json”“jsonp”
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function () {
                $("div button:eq(0)").click(function () {
                    $.get("html_data.html", {name:"zs", age:20}, function (data, status, xhr) {
                        $("#content1").html(data);
                    }, "html");
                })

                $("div button:eq(1)").click(function () {
                    $.post("html_data.jsp", {name:"zs", age:20}, function (data, status, xhr) {
                        $("#content2").html(data);
                    }, "html");
                })
            })
        </script>
    </head>
    <body>
        <div>
            <button>使用get加载数据</button>
            <button>使用post加载数据</button>
        </div>
        <div id="content1"></div>
        <div id="content2"></div>
    </body>
</html>

7.3 getScript方法

​ 异步的方式加载js文件,并在加载完成后可以立即执行js文件中的代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function () {
                $("button").click(function () {
                    $.getScript("test.js", function () {
                        //回调函数
                    });
                })
            })
        </script>
    </head>
    <body>
        <div>
            <button>加载js文件</button>
        </div>
        <div id="content1"></div>
        <div id="content2"></div>
    </body>
</html>

7.4 getJson方法

​ 与getScript方法一样,只是这个是加载的json格式的数据而已

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function () {
                $("button").click(function () {
                    $.getJSON("test.json", function (data) {
                        $("#name").html(data.name);
                        $("#pwd").html(data.pwd);
                    })
                })
            })
        </script>
    </head>
    <body>
        <div>
            <button>显示用户名和密码</button>
        </div>
        <div>
            <div>
                姓名:<span id="name"></span>
            </div>
            <div>
                密码:<span id="pwd"></span>
            </div>
        </div>
    </body>
</html>

7.5 ajax方法

​ 该方法是JQuery底层的AJAX实现,前面的方法都是对这个方法的封装。只有一个参数(对象),所有关于请求的数据都可以封装到这个参数中

$.ajax ( [ setting ] )

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function () {
                $("button").click(function () {
                    var setting = {
                        url:"http://localhost:8020/%E9%AB%98%E7%BA%A7Day13_jquery%E5%8A%A8%E7%94%BB%E5%92%8CAjax/test.json",
                        type:"get",
                        //请求的数据类型是jsonp
                        dataType:"jsonp",
                        cache:false,
                        success:function(data) {
//                          foo(data);
                        },
                        //将来会传一个参数 callback=?  
                         // callback=foo        则jsonp的格式是:foo(...)
                        jsonp:"callback",
                        jsonpCallback:"foo"
                    }
                    $.ajax(setting);
                })
                /*function foo (data) {
                    $("#name").html(data.name);
                    $("#pwd").html(data.pwd);
                }*/
            })

        </script>
    </head>
    <body>
        <div>
            <button>使用ajax方法</button>
        </div>
        <div>
            <div>
                姓名:<span id="name"></span>
            </div>
            <div>
                密码:<span id="pwd"></span>
            </div>
        </div>
    </body>
</html>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值