jQuery入门案例(笔记)

由于现在接手的项目需要用到jQuery,而身为jQuery小白的我之前略微的接触了一点,所以只能做到局部看得懂,却写不出.这使我开发效率大大降低,工欲善其事必先利其器!,于是我走上了jQuery的探索之路.下面是我这四天以来,边学习边实操的代码,分享给大家:

目录结构:

特别说明:除了最后一个案例,前面所有的案例只用到lib中唯一一个js文件:jQuery-1.11.3.min.js

已经将源代码发布到GitHub中,供大家下载学习,下载地址:https://github.com/godlikecheng/jQuery_Learning

下面则是已经copy下来的源代码:

01- jQuery入口函数

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JQuery入口函数</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <input type="button" id="btn" value="123" />
    <script>
        //DOM
        // window.onload = function () {
        //     var btn = document.getElementById('btn');
        //     btn.onclick = function (e) {
        //         alert(this.value);
        //     }
        // };
        window.onload = function(){
            console.log('load')
        }

        //jQuery占用了两个全局变量  $  === jQuery //true
        $(function () {
            //页面加载完成后自动执行
            console.log('ready1')
            var btn = document.getElementById('btn');
            btn.onclick = function(e){
                alert(this.value);
            }
        });  //$是一个函数,Jquery构造函数

        //文档加载完成之后自动执行回调函数
        $(document).ready(function () {
            console.log('ready2')
        });

    </script>
</body>

</html>

 

02-jQuery选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery选择器</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<body>
    <input type="button" value="按钮" id="btn"/>
    <script>
        //dom
        // window.onload = function(){
        //     document.getElementById('btn');
        // }

        //jQuery
        $(function(){
            //页面加载完成之后
            var $btn = $('#btn');  //#代表id选择器
            //jQuery的构造方法:
            //第一种方法: 可以接收一个回调函数,回调就是在页面加载完成之后执行。
            //第二种用法:还可以接收一个CSS选择器(string),返回选择器对应dom节点的jQuery包装对象

            //我们一般给jQuery的对象家一个$

            console.dir($btn);  
            //jQuery包装对象(所有的选择器选择返回的对象都是jQuery的包装对象。也就是一个伪数组)
            //jQuery包装对象和dom相互转换。
            var btn = $btn[0]; //jQuery → DOM

            //dom 对象转换 jQuery
            var $btn2 = $(btn);  //jQuery构造函数的第三种用法,接收一个dom对象,转成jQuery的包装对象
            console.dir($btn2);

            //转成jQuery的包装对象之后,就拥有了jQuery.fn上的api

        });
    </script>
</body>
</html>

 

03-jQuery其他选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery选择器</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<body>
    <!-- <p>我是P标签</p> -->
    <div class="cd">
        我是第一个div1
    </div>
    <div class="cd">
        我是第一个div2
        张宜成
    </div>
    <h3 tm="属性">标题属性</h3>

    <ul class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    <script>
        $(function(){
            //全部选择器,选择页面中的所有的标签元素
            var $all = $('*');
            console.dir($all);

            //类选择器
            var $cd = $('.cd');
            console.dir($cd);

            //将jQuery元素转换为dom元素,并取出第一个div
            var div1 = $cd[0];
            console.log(div1.innerHTML);

            //标签选择器和并集选择器
            console.dir($('div,h3'));

            //交集选择器
            console.dir($('div.cd2'));

            //过滤器选择器和后代选择器
            console.dir($('.list li:first'));

            //包含选择器
            var $div = $('div:contains("张宜成")');
            //如果选择器返回的是多个元素的时候,那么返回第一个元素的内部文本
            console.log($div.text());  //jQuery获取选择元素的内部文本

            var domDiv = $div[0];
            console.log(domDiv.innerHTML);

        });
    </script>
</body>
</html>

 

04-jQuery实现隔行变色

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>隔行变色</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        html,
        body,
        div,
        table,
        td {
            margin: 0;
            padding: 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #ccc;
            width: 400px;
        }

        td {
            border: 1px solid #ccc;
        }
    </style>
</head>

<body>
    <table>
        <tr>
            <td>用户名</td>
            <td>年龄</td>
            <td>编号</td>
        </tr>
        <tr>
            <td>张宜成</td>
            <td>11</td>
            <td>02</td>
        </tr>
        <tr>
            <td>张程程</td>
            <td>44</td>
            <td>04</td>
        </tr>
        <tr>
            <td>嗯哼</td>
            <td>55</td>
            <td>05</td>
        </tr>
        <tr>
            <td>哈哈</td>
            <td>66</td>
            <td>07</td>
        </tr>
    </table>

    <script>
        $(function () {
            //获得奇数行的tr标签
            var oddTrs = $('tr:odd');
            console.dir(oddTrs);
            //DOM原始的写法,很麻烦,需要进行遍历
            // for(var i = 0; i < oddTrs.length; i++){
            //     var domTr = oddTrs[i]; //拿到dom的tr标签对象
            //     domTr.style.backgroundColor = "#eee";
            // }

            //jQuery提供隐式迭代的用法
            //jQuery设置dom元素的样式,提供了方法css('styleName','value')
            //如果传一个参数,代表获取,传两个参数代表设置
            oddTrs.css('backgroundColor', '#aaa');
            //jQuery:如果包装对象里面的元素是多个的时候,做设置操作会影响包装对象中的所有dom
            //但是获取值,只返回第一个元素的值.

            //拿到所有的偶数行
            $('tr:even').css('backgroundColor', '#eee');
        });
    </script>

</body>

</html>

 

05-表格互斥学则高亮显示

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>表格高亮显示</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <table>
        <tr>
            <td>用户名</td>
            <td>年龄</td>
            <td>编号</td>
        </tr>
        <tr>
            <td>张宜成</td>
            <td>11</td>
            <td>02</td>
        </tr>
        <tr>
            <td>张程程</td>
            <td>44</td>
            <td>04</td>
        </tr>
        <tr>
            <td>嗯哼</td>
            <td>55</td>
            <td>05</td>
        </tr>
        <tr>
            <td>哈哈</td>
            <td>66</td>
            <td>07</td>
        </tr>
    </table>

    <script>
        $(function(){
            //Jquery可以通过原型上click方法进行绑定点击事件
            //$('tr');  //选择到了所有的tr
            $('tr').click(function(e){
                //点击了当前行,那么让当前行背景高亮,让其他的兄弟节点背景不高亮.
                //jQuery的事件处理程序中.this依然指向 this依然指向绑定事件dom对象
                $(this).css('backgroundColor','#ccc');
                //拿到多个兄弟节点,隐式迭代全部设置为白色.
                $(this).siblings().css('backgroundColor','#fff');
            });
        });
    </script>
</body>

</html>

 

06-jQuery绑定事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery绑定事件</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<body>
    <input type="button" value="按钮" id="btn">
    <script>
        window.onload = function(){
            var btn = document.getElementById('btn');
            //dom 0 级绑定时间的方式
            //事件处理程序只能绑定一个,绑定多个事件处理程序后面的会覆盖前面的.
            btn.onclick = function(){
                console.log('1234');
                //this  ===  绑定事件的dom对象
            };

            //dom2级绑定事件的方式
            //可以绑定多个事件处理程序,多个事件处理程序的执行顺序不能保证.
            if (btn.addEventListener) {
                btn.addEventListener('click',function(){
                    console.log('1234');
                },false);
            }else{
                //兼容ie8及以下浏览器.
                btn.attachEvent('onclick',function(){
                    var e = window.event;
                });
            }
        };
    </script>

    <!-- jQuery绑定事件的方法 -->
    <script>
        $(function(){
            //页面加载完成(dom树已经初始化好了,可以进行交互访问)
            $('#btn').click(function(e){  // e = jQuery.fn.event
                console.log('1234');
                console.log(this.value)  
            });
            $('#btn').click(function(e){  // e = jQuery.fn.event
                console.log('12345');
            });
            $('#btn').click(function(e){  // e = jQuery.fn.event
                console.log('123456');
            });
            //jQuery绑定事件的事件方式:类似于我们的Dom2级绑定事件的方式
            //可以绑定多个事件处理程序,而且执行顺序是按照注册顺序执行.
            //jQuery的事件处理程序中,this也执行绑定当前事件处理程序的dom对象
        });
    </script>

</body>
</html>

 

07-其他简单事件绑定案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>其他简单事件绑定案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div class="input-box">
        <input type="text" value="1">
        <input type="text" value="2">
        <input type="text" value="3">
        <input type="text" value="4">
    </div>
</body>
<script>
    $(function () {
        var $inputArray = $('.input-box input');
        //jQuery构造函数传入选择器,返回的是一个jQuery的包装对象
        //大部分的api都是在jQuery包装对象上
        // console.dir($inputArray);
        $inputArray.focus(function (e) {
            console.log(this.value);  //this 就是当前的input标签
        });

        //简单绑定事件,接收两个参数的情况
        $inputArray.change('张宜成', function (e) {
            console.dir(e);  //jQuery封装的事件对象
            console.log(e.data);
        });
        // 事件方法被调用,但没有传递参数
        //代码触发此事件,并模拟当前事件对应的操作.
        $inputArray[3].focus();  //触发focus事件,模拟获取焦点的操作
    });

</script>


</html>

 

08-触发事件和事件处理程序

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>触发事件和事件处理程序</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div>
        <input type="button" value="按钮" id="btn">
    </div>
    <script>
        $(function () {
            //绑定事件
            $('#btn').click(function (e, a, b) {
                console.log(e, a, b);
            });

            $('div').click(function(e){
                console.log('div is cliced');
            });

            //触发事件
            // $('#btn').click(); //第一种触发方式

            //第二种触发点击事件
            // $('#btn').trigger('click',['1234','3333']);

            //触发事件处理程序,不触发事件本身
            $('#btn').triggerHandler('click',[2,3]);

        });
    </script>
</body>

</html>

 

09-jQuery省市选择

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery省市选择</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <select name="pro" id="proSel"></select>
    <select name="city" id="citySel"></select>
    <script>
        //第一步:初始化好所有的省信息
        //模拟从ajax获取的数据
        var data = [{
            name:"北京",
            cities:[
                "西城","东城","崇文","宣武","朝阳"
            ]
        },
        {
            name:"山东",
            cities:[
                "潍坊","济南","青岛","日照","威海"
            ]
        }
        ];

        $(function(){
            //初始化省的数据
            initProSel();
        });

        //省的下拉列表的初始化
        function initProSel(){
            var strHTMLArray = [];
            for(var i = 0; i < data.length; i++){
                var proName = data[i].name;
                //<option value = "北京">北京</option>
                strHTMLArray.push('<option value="'+ proName +'">' + proName + '</option>')
            }

            //把拼接好的标签放到省的select下面
            //jQuery的html方法已经对ie8的select设置innerHTML的bug做了相关处理,可以直接用.
            $('#proSel').html(strHTMLArray.join(''));

            //给省的select标签绑定change事件
            $('#proSel').change(function(){
                //当省选择完之后,要加载城市的信息到citySel
                //拿到当前选择的省的名字
                //console.log($('proSel').val());
                var proName = $('#proSel').val();
                for(var j = 0; j < data.length; j++){
                    if(data[j].name == proName){
                        var cities = data[j].cities;
                        initCityes(cities);
                    }
                }
            });

            //触发省change的事件处理程序
            $('#proSel').triggerHandler('change');
        }

        //初始化城市的信息
        function initCityes(cities){
            var strHTMLArray = [];
            for(var i = 0; i < cities.length; i++){
                //var cityName = cities[i];
                strHTMLArray.push('<option value = "'+ cities[i] +'">' + cities[i] + '</option>');
            }
            $('#citySel').html(strHTMLArray.join(''));
        }
    </script>
</body>

</html>

 

10-jQuery高级绑定事件的方式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery高级绑定事件的方式</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <input type="button" value="按钮" id="btn">
    <input type="button" value="按钮" id="btn2">
    <script>
        $(function () {
            //jQuery简单绑定事件
            // $('#btn').click(function(e){
            // });

            //第一种:绑定事件的方式,推荐使用
            //jQuery高级绑定事件的方式
            $('#btn').bind('click', function (e) {
                console.log(this.value, e);
            });

            //第一个参数:事件类型,String
            //第二个参数:给事件处理程序的参数的data属性传递数据
            //第三个参数:事件处理程序的回调函数
            //jQuery的bind方法,传递三个参数
            $('#btn').bind('focus','222',function(e){
                console.log(e.data);
            });

            //bind方法可以对同一个事件绑定多个事件处理程序,执行顺序就是绑定事件的顺序.
            $('#btn').bind('focus','333',function(e){
                console.log(e.data);
            })

            //第二种:同时绑定多个事件
            // $('#btn2').bind('click focus', function(e){
            //     console.log(e.type);
            // });

            //第三种:绑定一个事件对象 最好不要用
            $('#btn2').bind({
                click:function(e){
                    console.log('click');
                },
                mousedown:function(e){
                    console.log(e.type);
                }
            });
        });
    </script>
</body>

</html>

 

11-jQuery绑定事件的其他方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery绑定事件的其他方式</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<body>
    <input type="button" value="按钮" id="btn">
    <script>
        $(function(){
            //绑定的事件只执行一次,执行一次完毕后就失效了
            $('#btn').one('click',function(e){
                console.log(111);
            });
        });
    </script>
</body>
</html>

 

12-jQuery事件委托的绑定方式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>事件委托</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <ul class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        $(function () {
            //事件委托绑定的方式,第一个是参数,是过滤子元素.
            //第二个参数:事件类型.
            //第三个参数:事件处理程序
            $('.list').delegate('li', 'click', function (e) {
                //dom
                console.log(this.innerHTML);  //innerText(ie),textContent(ff)
                //jQuery
                console.log($(this).text());
            });
            
            //jQuery: click(简单绑定事件)
            //bind 
            //one:事件只执行一次
            //live:对动态创建的dom元素绑定事件
            //delegate:事件委托绑定
        });

    </script>

</body>

</html>

 

13-jQuery的大一统绑定事件的方式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ON绑定事件</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <input type="button" value="按钮" id="btn">
    <ul class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        $(function () {
            //on替代 bind 动态创建元素绑定事件的方式
            $('#btn').on('click', function (e) {
                console.log(123);
            });

            //on替代live动态创建元素绑定事件的方法
            //dom动态创建
            var domP = document.createElement('p');
            domP.innerHTML = '1234';
            $(domP).on('click', function (e) {
                console.log($(this).text());
            });
            document.body.appendChild(domP);

            //jQuery 动态创建dom标签
            var $p = $('<p>123456789</p>');
            //给动态标签绑定事件
            $p.on('click', function (e) {
                console.log($(this).text());
            });
            //给页面中的body添加$p标签
            $('body').append($p);

            //jQuery构造函数的用法复习
            //1.接收一个回调函数,作为:document ready事件
            //2.可以接收一个字符串作为 选择器进行选择页面中元素,返回jQuery包装对象.
            //3.可以接收一个dom对象,将dom对象转换jQuery包装对象
            //4.可以接收一个html标签字符串,创建成jQuery包装对象

            //On 替代deledate方法
            $('.list').on('click','li',function(e){
                console.log($(this).html());
            });
        });
    </script>
</body>

</html>

 

14-accordion手风琴效果

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>手风琴效果</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
    <style>
        /* 更强大版本看28 */
    </style>

<body>
    <ul class="ac">
        <li class="ac-iteam on">
            <div class="ac-item-hd">头部1</div>
            <div class="ac-item-bd">内容1</div>
        </li>
        <li class="ac-iteam">
            <div class="ac-item-hd">头部2</div>
            <div class="ac-item-bd">内容2</div>
        </li>
        <li class="ac-iteam">
            <div class="ac-item-hd">头部3</div>
            <div class="ac-item-bd">内容3</div>
        </li>
        <li class="ac-iteam">
            <div class="ac-item-hd">头部4</div>
            <div class="ac-item-bd">内容4</div>
        </li>
    </ul>

    <script>
        $(function () {
            $('.ac-item-hd').on('click', function (e) {
                //addClass 添加样式类
                $(this).parent().addClass('on');
                //removeClass 是移除样式类
                $(this).parent().siblings('li').removeClass('on');  //隐式迭代
            });
        });
    </script>

</body>

</html>

 

15-jQuery解绑事件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>解绑事件</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <input type="button" value="解绑事件" id="btn">
    <input type="button" value="解绑命名空间事件" id="btnoffNameSpace">
    <ul class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    <script>
        $(function () {
            //绑定事件
            $('.list li').on('click', function (e) {
                console.log(this.innerHTML);
            });

            //事件类型后面 .demo 表示当前事件所属 demo命名空间
            $('.list li').on('click.demo',function(e){
                console.log("==",this.innerHTML,"==");
            });

             $('.list li').on('click.demo',function(e){
                console.log("===",this.innerHTML,"===");
            });

            $('#btn').on('click',function(e){

                //解绑on的click事件
                // $('.list li').off('click');

                //解绑所有事件
                $('.list li').off();
            });

            //解绑命名空间事件
            $('#btnoffNameSpace').on('click',function(e){
                //解绑了命名空间事件,其他命名空间的事件或者没有命名空间的事件不受影响
                $('.list li').off('click.demo');
            });

        });
    </script>
</body>

</html>

 

16-jQuery事件对象

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery事件对象</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <p>
        张宜成张宜成张宜成张宜成张宜成张宜成
    </p>
    <input type="text"/>
    <script>
        $(function () {
            $('p').on('click', function (e) {
                console.log(e);
                console.log(e.width);
            });
            $('input:text').on('keydown',function(e){
                //which可以获得键盘键,鼠标键
                console.log(e.which);
            });

            //绑定一个自定义事件
            $('input:text').on('myevent',function(e){
                console.log('我的自定义事件');
                console.log(this.value);
            });

            //触发自定义事件
            $('input:text').trigger('myevent');
        })
    </script>
</body>

</html>

 

17-jQuery合成事件案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>合成事件案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        .box {
            position: absolute;
            overflow: hidden;
            border: 1px solid #ccc;
        }

        .left {
            height: 200px;
            width: 100px;
            float: left;
        }

        .box .aside {
            /* display: none; */
            width: 100px;
            height: 200px;
            float: left;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="left"></div>
        <div class="aside"></div>
    </div>

    <script>
        $(function(){
            $('.box').hover(function(e){
                //鼠标移入,让aside标签显示
                $('.aside').css('display','block');
            },function(e){
                $('.aside').css('display','none');
            });
        });
    </script>
</body>

</html>

 

18-jQuery属性读写操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery属性读写</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<body>
    <input type="checkbox" checked name="ckb" id="ckb2">
    <p class="txt" tmd="ss">搜索</p>
    <p class="txt" tmd="ss">搜索</p>
    <p class="txt" tmd="ss">搜索</p>
    <script>
        $(function(){
            //第一种:属性读取的用法,接收一个参数:属性名字,返回第一个匹配的对象的属性值
            //读取属性
            console.log($('.txt').attr('tmd'));
            
            //第二种: 设置属性,接收两个参数.第一个参数:属性名字.
            //第二个参数是:要设置的属性值
            //写入属性
            // $('.txt').attr('tmd','1234');
            console.log($('.txt').attr('tmd'));

            //通过attr方法获取的单属性的值的时候就是属性名字或者undefined
            console.log($('#ckb2').attr('checked'));

            //第三种用法,可以同时设置多个属性值,传入一个属性对象
            $('p').attr({
                mk:'123',
                md:'456'
            });
            
            //第四种用法:jQuery回调函数
            $('p').attr('tmd',function(index,oldAttr){
                return oldAttr + index;  //隐式迭代
            });
            console.log($('p'));

            //设置单个属性值设置方法
            // $('#ckb2').removeAttr('checked');
            // $('#ckb2').attr('checked','checked');

            //单属性的处理一般都要用prop来处理
            //checked selected disabled ==> Boolean
            $('#ckb2').prop('checked',true);
            $('#ckb2').prop('checked',false);
        });
    </script>
</body>
</html>

 

19-动态创建表格案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>动态创建表格案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <table class="list">
        <thead>
            <th>用户名</th>
            <th>邮箱</th>
            <th>年龄</th>
        </thead>
        <tbody>
            <tr>
                <td>张宜成</td>
                <td>[email protected]</td>
                <td>18</td>
            </tr>
        </tbody>
    </table>
    <script>
        var data = [{
            name:'张宜成1',
            mail:'[email protected]',
            age:20
        },
        {
            name:'张宜成2',
            mail:'[email protected]',
            age:22
        },
        {
            name:'张宜成4',
            mail:'[email protected]',
            age:33
        },
        {
            name:'张宜成5',
            mail:'[email protected]',
            age:99
        },
        {
            name:'张宜成6',
            mail:'[email protected]',
            age:45
        }];

        //思路:把上面的数组进行遍历,拼接字符串把html字符串放到tbody中去.
        $(function(){
            var tempStrArray = [];
            for(var i = 0; i < data.length; i ++){
                var tempStr = "";
                tempStr += "<tr>";
                tempStr += "<td>" + data[i].name +"</td>";
                tempStr += "<td>" + data[i].mail +"</td>";
                tempStr += "<td>" + data[i].age +"</td>";
                tempStr += "</tr>";

                //把拼接的字符串放到数组中
                tempStrArray.push(tempStr);
            }

            //设置元素内部的标签的字符串, 第二种用法
            $('.list tbody').html(tempStrArray.join(''));

            //读取标签内部的html字符串,第一种用法
            console.log($('.list tbody').html());

            //第三种用法
            $('.list tbody').html(function(index,oldHtml){
                
            });
        });
    </script>
</body>

</html>

 

20-jQuery实现开关灯案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>开关灯案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<style>
    .cls{
        background-color: #000;
    }
</style>

<body>
    <input type="button" value="关灯" id="btnLight">
    <script>
        $(function () {
            $('#btnLight').on('click', function (e) {
                //按钮点击关灯后:文字改成开灯,然后背景变成黑色
                //再点击开灯,那么文字改为关灯,背景变白色
                if($(this).val() == '关灯'){
                    $(this).val('开灯');
                    //addClass添加样式类
                    // $(document.body).addClass('cls');
                }else{
                    //开灯的效果
                    $(this).val('关灯');
                    //reomveClass移除样式类
                    // $(document.body).removeClass('cls');
                }
                
                //切换样式类:如果有则去掉.,如果没有则添加上.
                $(document.body).toggleClass('cls');
            });
        });

        // attr() prop() html() text() val() addClass()  toggleClass()
        //hasClass('cls')  ==> Boolean
    </script>
</body>

</html>

 

21-jQuery样式处理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>样式处理</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        
    </style>
</head>
<body>

    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>

    <script>
        $(function(){
            //css jQuery内部做了兼容处理,即使没有设置css属性值,会把最终的结果返回.
            //全部标签颜色设置为红色
            // $('p').css('color','red');
             $('p:first').css('color','red');
            //  $('p:last').css('color','red');
             console.log($('p:first').css('color'));

            $('p').css({color:'red',"font-size":'18px',"background-color":'blue'})

            //动态创建标签元素
            //jQuery构造函数的用法汇总:
            //1.选择器 2.把dom对象转换jQuery对象, 3.接收回调函数,作为网页加载完成的入口
            //4.接收一个html的字符串,创建成动态的dom包装对象.
            // $('<div><span>123</span</div>').appendTo(document.body);  //appendTo追加父元素  前面是子 后面是父
            var $div = $('<div><span>123</span></div>')
            $(document.body).append($div); //append 追加子元素  前面是父 后面是子

        });
    </script>
</body>
</html>

 

22-jQuery实现视频案例标签

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>视频标签案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
        crossorigin="anonymous">
    <style>
        html,
        body,
        div {
            padding: 0;
            margin: 0;
        }

        .label-wrap {
            width: 300px;
            /* height: 30px; */
            line-height: 30px;
            padding: 10px;
            border: 1px solid #ccc;
            overflow: hidden;
            margin: 100px auto;
        }

        .label-wrap .txt-lb {
            border: none;
            outline: none;
            height: 30px;
            line-height: 60px;
            width: 30px;
            float: left;
        }

        .label-wrap .lb-span {
            float: left;
            border: 1px solid #ccc;
            padding: 0 10px;
            margin-right: 10px;
        }
    </style>
</head>

<body>
    <div class="label-wrap">
        <span class="lb-span">jQuery
            <i class="glyphicon glyphicon-remove"></i>
        </span>
        <input type="text" class="txt-lb">
    </div>
</body>

<script>
    $(function () {

        //当文本框按下按键时处理
        $('.txt-lb').on('keydown', function (e) {
            //判断用户是否按下了回车: e.which == 13 回车键
            if (e.which == 13) {
                InputToLable();
            } else if (e.which == 8) {
                //按下了删除键
                //把最后一个lb-span标签删除,把里面文本放到文本上去
                if ($(this).val().length <= 0) {
                    var txt = $('.label-wrap span:last').text();
                    $(this).val(txt);
                    $('.label-wrap span:last').remove();

                    //取消默认行为,取消后退键删除字符的默认行为
                    e.preventDefault();
                    e.stopPropagation();
                }
            }
        });

        //给整个div绑定一个点击事件,进行给文本获取焦点
        $('.label-wrap').on('click', function (e) {
            $('.txt-lb').focus();
        });

        //当文本框失去焦点的时候,给div添加span标签,另外input清空
        $('.txt-lb').on('blur', function () {
            InputToLable();
        });

        //删除label按钮点击事件
        $('.label-wrap').on('click', 'i', function (e) {
            $(this).parent().remove();
        });

        //将文本框中的文本生成label样式的标签
        function InputToLable() {
            //判断文本框不为空,则进行添加标签操作
            if ($(".txt-lb").val().length > 0) {
                //当前文本框的文本生成一个span标签放到文本框之前
                var $lb = $('<span class="lb-span">' + $('.txt-lb').val() + '<i class="glyphicon glyphicon-remove"></i></span>');
                //在文本框前面追加一个lb对象
                $('.txt-lb').before($lb);
                $('.txt-lb').val('');  //设置value为空
            }
        }
    });
</script>

</html>

 

23-jQuery包裹方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery包裹标签</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<body>
    <p id="p1">1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
    <p>7</p>
    <p>8</p>
    <p>9</p>
    <p>10</p>
    
    <script>
        $(function(){
            //让每个p标签都包裹一个div标签
            // $('p').wrap('<div></div>');

            //把所有匹配的元素用一个标签进行包裹
            // $('p').wrapAll('<div></div>');

            //把标签内部的子元素用一个标签进行包裹
            // $('p').wrapInner('<span></span>');

            //把A替换掉所有满足selector条件的B元素
            // $('<span>张宜成</span>').replaceAll('p:first');

            //把A用B来进行替换
            // $('p:last').replaceWith('<div>---</div>');
            
            var t = $('p:first').clone(true);
            console.log(t);
            $('p:first').clone(true).appendTo('body');
        });

        // 兄弟节点级别操作:after before insertBefore insertAfter
        // 子节点的操作: append appendTo prepend prependTo
        // 包裹节点: wrap  wrapAll wrapInner
        // 删除子节点: empty remove
        // 替换节点: replaceWith replaceAll()
        // 动态创建节点:$(<div></div>)
    </script>
</body>
</html>

 

24-jQuery宽高和位置

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>宽高和位置</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        html,body,div{
            padding: 0;
            margin: 0;
        }

        .box{
            width: 100px;
            height: 100px;
            border: 13px solid #ccc;
            padding: 10px;
            margin: 22px;
            background-color: #c09;
        }
    </style>
</head>

<body>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <h1>1</h1>
    <h1>2</h1>
    <h1>3</h1>
    <h1>4</h1>
    <h1>5</h1>
    <h1>6</h1>
    <h1>7</h1>
    <h1>8</h1>
    <h1>9</h1>
    <h1>10</h1>
    <input type="button" value="获取滚动高度" id="btnGetScrollTop"/>
    <script>
        $(function() {
            console.log('innerHeight:',$('.box').innerHeight());
            console.log('innerHeight:',$('.box').innerWidth());

            //计算边框 + 内边距 + 内容
            console.log('innerHeight true:',$('.box').outerHeight());
            console.log('innerHeight true:',$('.box').outerWidth());

             //计算外边框 + 内边距 + 内容 + 边框
            console.log('outerHeight:',$('.box').outerHeight(true));
            console.log('outerHeight:',$('.box').outerWidth(true));

            //读取内容区域的宽高
            console.log('width:',$('.box').width());
            console.log('height:',$('.box').height());

            //设置内容区域宽高
            console.log('width:',$('.box').height(150));
            // console.log('height:',$('.box').height(150));
            //也可以传字符串
            // console.log('height:',$('.box').width('200px'));

            //用的非常少
            $('.box').width(function(index,width){
                return width +  index * 20;
            });

            //读取内容区域的宽高
            console.log('width:',$('.box').width());
            console.log('height:',$('.box').height());

            $('#btnGetScrollTop').on('click', function(){
                //console.log($(window).scrollTop());
                //滚动条滚动效果 (0)为位置
                $(window).scrollTop(0);
            });

            // height width innerWidth innerHeight
            //outerHeight outerWidth(true)
            //scrollTop scrollLeft 可读可写

            //position ==> {left:19, top:20};  //相对于定位的元素的dom中 offsetLeft offsetTop
            //offset  ==> {left:19,top:20}  // 相对于视口的宽高 clientLeft clientTop
        });
    </script>
</body>

</html>

 

25-jQuery动画系统

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>动画系统</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        html,body,div{
            padding: 0;
            margin: 0;
        }

        .box{
            width: 100px;
            height: 100px;
            background-color: #000;
            display: none;
        }
    </style>
</head>
<body>
    <input type="button" value="显示" id="btnShow">
    <input type="button" value="隐藏" id="btnHide">
    <input type="button" value="划上" id="btnSlideUp">
    <input type="button" value="划下" id="btnSlideDown">
    <input type="button" value="切换滑动" id="btnToggleSlide">
    <input type="button" value="淡入" id="btnFadeIn">
    <input type="button" value="淡出" id="btnFadeOut">
    <input type="button" value="设置透明度" id="btnFadeTo">
    <div class="box"></div>
    <script>
        $(function(){
            $('#btnShow').on('click',function(e){
                //给show 传的参数: 字符串类型:slow(600) 慢 Normal(400) fast:200ms
                // $('.box').show('slow');  
                // $('.box').show('fast');  

                //给show方法设置时间间隔 单位是毫秒 
                // $('.box').show(2000);
                //  $('.box').show(2000,"linear");
                 $('.box').show(700,"swing",function(e){
                     console.log('animate is over!!')
                 });
            });
                $('#btnHide').on('click',function(e){
                     $('.box').hide(700);  //隐藏
                 });
                
                $('#btnSlideUp').on('click',function(e){
                    $('.box').slideUp('slow');
                });

                $('#btnSlideDown').on('click',function(e){
                    $('.box').slideDown(300,'linear',function(){
                        console.log('slide-down is over');
                    });
                });

                $('#btnToggleSlide').on('click',function(e){
                    $('.box').slideToggle(500);
                });

                $('#btnFadeIn').on('click',function(e){
                    $('.box').fadeIn(1000);
                });

                $('#btnFadeOut').on('click',function(e){
                    $('.box').fadeOut(1000);
                });

                $('#btnFadeTo').on('click',function(e){
                    // 0是完全透明
                    // 1是完全不透明
                    // $('.box').fadeTo(1000, 0.1);

                    $('.box').show(1000).slideUp(1000).slideDown(1000).fadeTo(1000,0.5)
                });

                // show hide
                //slideUp slideDown slideToggle
                // fadeIn fadeOut fadeToggle
                // 参数: [duration]:动画持续的时间, slow 1000
                //       [easing]: linear swing 动画的效果
                //       fn 动画结束的时候执行的回调函数
                // 返回值:都是调用动画的包装对象
        });
    </script>
</body>
</html>

 

26-jQuery自定义动画

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>自定义动画</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
<style>
    html,
    body,
    div {
        padding: 0;
        margin: 0;
    }

    .box {
        height: 100px;
        width: 100px;
        background-color: #098;
        border: 1px solid #ccc;
        position: absolute;
    }
</style>

<body>

    <input type="button" value="动画" id="btnAnimate">
    <div class="box"></div>
    <h1>1</h1>
    <h1>2</h1>
    <h1>3</h1>
    <h1>4</h1>
    <h1>5</h1>
    <h1>6</h1>
    <h1>7</h1>
    <h1>8</h1>
    <h1>9</h1>
    <h1>10</h1>
    <h1>11</h1>
    <h1>12</h1>
    <h1>13</h1>
    <h1>14</h1>
    <h1>15</h1>
    <h1>16</h1>
    <h1>17</h1>
    <h1>18</h1>
    <h1>19</h1>
    <h1>20</h1>
    <input type="button" value="滚动到顶部" id="btnScrollTop"/>
    <script>
        $(function () {
            $('#btnAnimate').on('click',function(e){
                $('.box').animate({
                    height:200,
                    width:300,
                    left:'+=30px', //每次都执行增加30像素的动画
                    top:'+=50px',
                    paddingLeft:'+=50px'
                },500,'swing');
            });

            $('#btnScrollTop').on('click',function(e){
                $('html,body').animate({
                    scrollTop:0  //animate动画效果 scrollTop实现滚动
                },500);
            });

        });
    </script>
</body>

</html>

 

27-动画队列

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>动画队列</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        .box {
            height: 100px;
            width: 100px;
            border: 1px solid #ccc;
            background-color: magenta;
        }
    </style>
</head>

<body>
    <input type="button" value="动画" id="btn">
    <input type="button" value="立即结束动画" id="btnFinish">
    <input type="button" value="停止动画" id="btnStop">
    <div class="box"></div>
    <script>
        $(function () {
            $('#btn').on('click', function (e) {
                $('.box').hide(1000)
                    .show(1000)
                    .slideUp(1000)
                    .slideDown(1000)
                    .fadeTo(1000, 0.5)
                    .animate({ width: 200 }, 1000);
            });

            $('#btnFinish').on('click', function (e) {
                //立即结束动画,让dom元素变化到最终动画队列都结束的效果状态
                $('.box').finish();
            });

            $('#btnStop').on('click',function(e){
                //stop方法传入一个参数:false或者不传参数,表示结束当前的动画,后续的动画不受影响.
                // $('.box').stop(false);
                //如果传入第一个参数为true,后续的动画也都受影响.不执行了.
                // $('.box').stop(true);

                //让dom元素动画状态结束,然后让dom元素到当前动画结果的状态
                $('.box').stop(true,true);

            });



        });
    </script>
</body>

</html>

 

28-手风琴效果动画版本

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>手风琴效果</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>
    <style>
        /* 未添加CSS样式类,所以效果无法展示,抱歉 */
    </style>

<body>
    <ul class="ac">
        <li class="ac-iteam on">
            <div class="ac-item-hd">头部1</div>
            <div class="ac-item-bd">内容1</div>
        </li>
        <li class="ac-iteam">
            <div class="ac-item-hd">头部2</div>
            <div class="ac-item-bd">内容2</div>
        </li>
        <li class="ac-iteam">
            <div class="ac-item-hd">头部3</div>
            <div class="ac-item-bd">内容3</div>
        </li>
        <li class="ac-iteam">
            <div class="ac-item-hd">头部4</div>
            <div class="ac-item-bd">内容4</div>
        </li>
    </ul>

    <script>
        $(function () {
            $('.ac-item-hd').on('click', function (e) {
                //addClass 添加样式类
                $(this).parent().addClass('on');
                $(this).siblings('.ac-item-bd').slideDown(500);
                //removeClass 是移除样式类
                $(this).parent().siblings('li').removeClass('on').find('.ac-item-bd').slideUp(500);  //隐式迭代
            });
        });
    </script>

</body>

</html>

 

29-京东秒杀案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>京东秒杀案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        html,
        body,
        div {
            padding: 0;
            margin: 0;
        }

        .box {
            width: 640px;
            height: 326px;
            border: 1px solid #ccc;
            overflow: hidden;
            position: relative;
        }

        .cv-box {
            position: absolute;
            top: 100%;
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="../img/1.png" alt="">
    </div>
    <div class="cv-box">
        <img src="../img/2.png" alt="">
    </div>

    <script>
        $(function () {
            $('.box').hover(function (e) {
                //鼠标移入:top减少到0
                $('.cv-box').animate({ top: 0 }, 300);
            }, function (e) {
                //鼠标移开
                $('.cv-box').animate({ top: '100%' }, 300);
            });
        });
    </script>
</body>

</html>

 

30-jQuery高级

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery高级</title>
</head>

<body>

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    <script src="../lib/jquery-1.11.3.min.js"></script>
    <script>
        //数组的方法forEach ie9+
        var arr = ['a', 'b', 3, 4];
        // value数组的元素 index数组元素的索引
        arr.forEach(function (value, index) {
            console.log('index:', index, 'value:', value)
        });

        //jQuery原型上提供了each
        $(function(){
            $('li').each(function(index,elem){
                console.log(index,elem);
            });
        });

    </script>
</body>

</html>

 

31-jQuery构造函数属性和方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery构造函数属性和方法</title>
</head>

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <script>
        //jQuery的构造函数方法
        //jQuery构造函数的几个应用:
        //1.选择元素: $('li') $('.box')
        //2.dom对象转换jQuery包装对象, $(dom) ==> jQuery
        //3.动态创建dom标签jQuery包装对象, $('<div></div>')

        //each方法
        // jQuery.each([1, 'abc', 2, 3], function (index, value) {
        //     console.log(index, value);
        // });

        $(function () {
            //页面加载完成后才执行
            // jQuery.each($('li'),function(index,value){
            //     console.log(index,value);
            // });

            //jQuery构造函数的map方法
            // var newArrJQuery = jQuery.map(['a', 'b', 'c', 'd'], function (value, index) {
            //     console.log(value, index);
            //     return value + index;
            // });
            // console.log(newArrJQuery);

            // var n2 = $.grep([0, 1, 2], function (n, i) {
            //     return n > 0;
            // });
            // console.log(n2);
        });

        //JS ec5 中提供的map方法 对数组中的元素进行处理并返回新数组
        // var arr = ['a', 'b', 'c', 'd'];
        // var newArr = arr.map(function(value, index){
        //     return value + index;  // 'a' + 0
        // });
        // console.log(newArr);
        
        //浅拷贝,子对象只复制 子对象的地址.具体内容不进行复制.
        // var target = {name:'zyc'};
        // var obj1 = {age:18, cellphone:'13181699498',mail:'[email protected]'}
        // var p1 = {k:123, m:'abc'};
        // var obj2 = {run:function(){ console.log(1);}, p:p1}

        // var newObj = jQuery.extend(target, obj1, obj2);
        // console.log(newObj, target);
        // console.log(newObj === target)

        // //console.log(newObj.p === p1);
        // console.log(newObj.p.k);  //123
        // p1.k = 444;  //newObj.p.k
        // console.log(newObj.p.k);  //444
        
        //深拷贝
        var target = {name:'zyc'};
        var obj1 = {age:18, cellphone:'13181699498',mail:'[email protected]'}
        var p1 = {k:123, m:'abc'};
        var obj2 = {run:function(){ console.log(1);}, p:p1}

        var newObj = jQuery.extend(true,target, obj1, obj2);
        console.log(newObj, target);
        console.log(newObj === target)

        //console.log(newObj.p === p1);
        console.log(newObj.p.k);  //123
        p1.k = 444;  //newObj.p.k
        console.log(newObj.p.k);  //123
        console.log('p1.k', p1.k);  //444


    </script>
</body>

</html>

 

32-jQueryl链式编程

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>链式编程</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>

    <div class="box">
        sss
    </div>

    <script>
        $(function () {
            $('.box').text('33333').slideUp(1000).slideDown(1000);
        });

        //链式编程的原理:对象调用了方法后,方法返回当前对象.
        var cat = {
            run: function () {
                console.log('runing');
                return this;  //核心:方法内部又把当前对象返回了
            },
            sayHi: function () {
                console.log('Hi');
                return this;
            },
            jump: function () {
                console.log('jump');
                return this;
            }
        };

        cat.run().sayHi().jump();
    </script>
</body>

</html>

 

33-评分控件案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>评分控件案例</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <style>
        html,
        body,
        div,
        ul,
        li {
            padding: 0;
            margin: 0;
        }

        ul,
        ol {
            list-style: none;
        }

        .list li {
            float: left;
            width: 20px;
            font-size: 20px;
        }
    </style>
</head>

<body>
    <ul class="list">
        <li>☆</li>
        <li>☆</li>
        <li>☆</li>
        <li>☆</li>
        <li>☆</li>
    </ul>
</body>

<script>
    $(function () {
        //第一个效果: 当鼠标移入 五角星的时候.之前的五角星和自己都变成实心的五角星
        $('.list li').hover(function (e) {
            //鼠标移入:当鼠标移入 五角星的时候. 之前的五角星和自己都变成实心的五角星
            $(this).text('★').prevAll().text('★');  //隐式迭代.
        }, function (e) {
            //鼠标移出:把自己变成空心五角星,而且后面的也都变成空心五角星了
            $(this).text('☆').nextAll().text('☆');
        }).on('click', function (e) {
            //点击之后,记录当前点击的是谁
            $(this).addClass('cur').siblings().removeClass('cur');
        });

        //给整个ul标签绑定一个mouseleave事件.
        $('.list').on('mouseleave', function (e) {
            //拿到当前cur类的li标签
            $('.list li.cur').text('★')
                .prevAll().text('★')  //前面的节点都设置成实心
                .end().nextAll().text('☆');  //点击元素后面的节点设置成空心
        }); 
    });
</script>

</html>

 

34-jQuery插件扩展

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery插件扩展</title>
    <script src="../lib/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div class="box">
        123
    </div>

    <script>
        //jQuery扩展插件:
        // 第一种:扩展jQuery原型对象的方法
        (function ($) {
            //给jQuery原型的扩展方法,可以jQuery的包装对象上使用
            $.fn.logText = function () {
                console.log(this.text());
            }
        })(jQuery);

        //使用自己的扩展方法
        $(function () {
            //自定义扩展的原型的方法,也就是jQuery插件
            $('.box').logText();
        });

        //第二种: 扩展jQuery构造函数上的插件(方法)
        // jQuery.logTime = function(){
        //     console.log(Date.now().toString());
        // }
            
        //jQuery的extend方法,不传入target时,可以直接对jQuery构造函数扩展属性或方法.
        $.extend({
            logTime:function(){
                console.log(new Date());
            }
        });

        $.logTime();
    </script>
</body>

</html>

 

35-jQuery Ui插件应用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>jQuery Ui</title>

    <!-- 一定注意: 用jQuery的插件首先引用jQuery脚本后引用插件的脚本 -->
    <script src="../lib/jquery-1.11.3.min.js"></script>
    <script src="../lib/jquery-ui-1.12.1.custom/jquery-ui.js"></script>
    <link rel="stylesheet" href="../lib/jquery-ui-1.12.1.custom/jquery-ui.css">
    <link rel="stylesheet" href="../lib/jquery-ui-1.12.1.custom/jquery-ui.theme.css">

</head>

<body>
    <div class="tabs">
        <ul>
            <li>
                <a href="#tabs-1">商品</a>
            </li>
            <li>
                <a href="#tabs-2">用户</a>
            </li>
            <li>
                <a href="#tabs-3">管理</a>
            </li>
        </ul>
        <div id="tabs-1">
            <p>商品啊</p>
        </div>
        <div id="tabs-2">
            用户的管理
            <input type="button" value="弹出对话框" id="btnOpenDialog">
            <div title="弹出来的对话框标题" class="dialog-box" style="display: none;">
                对话框内容
                <img src="../img/2.png" alt="">
            </div>
        </div>
        <div id="tabs-3">
            <img src="../img/1.png" alt="">
        </div>
    </div>

    <script>
        $(function () {
            $('.tabs').tabs();
            $('#btnOpenDialog').on('click', function () {
                //弹出对话框
                $('.dialog-box').dialog({
                    width: 660,
                    height: 420,
                    draggable: true,  //设置是否可拖拽
                    buttons: [{
                        text: "关闭对话框",
                        click: function () {
                            $(this).dialog('close');
                        }
                    }],
                    close: function (e) {
                        console.log('close dialog')
                    }
                });
            });
        });
    </script>
</body>

</html>

在此特别感谢马老师提供的高质量的资料.并将马老师推荐给同学们

资料地址:https://www.jianshu.com/u/cb593334c8bc

猜你喜欢

转载自blog.csdn.net/qq_40820862/article/details/81513128