1. 程式人生 > >jQuery開發案例(筆記)

jQuery開發案例(筆記)

由於現在接手的專案需要用到jQuery,而身為jQuery小白的我之前略微的接觸了一點,所以只能做到區域性看得懂,卻寫不出.這使我開發效率大大降低,工欲善其事必先利其器!,於是我走上了jQuery的探索之路.下面是我這四天以來,邊學習邊實操的程式碼,分享給大家:

目錄結構:

特別說明:除了最後一個案例,前面所有的案例只用到lib中唯一一個js檔案:jQuery-1.11.3.min.js

下面則是已經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>