2022-02-14

1.jQuery的extend扩展:

<script src="./jquery-1.12.4.js"></script>

    <script>

        /* extend()函数用于将一个或多个对象内容合并到目标对象 */

        /* $.extedn([deep],target,object1,object2) */

        /* deep,可选,是否深度合并对象 默认false*/

        /* target object类型,目标对象,其他对象成员属性附加到该对象上 */

        /* objct2 需要被合并的对象 */

        var object1 = {

            apple:0,

            banana:{weight:52,price:100},

            cherry:97

        };

        var object2 = {

            banana:{price:200},

            durian:100

        };

        /* 默认false,不深度合并对象,banana的值会被object2的值直接覆盖 */

        /* console.log( $.extend(object1,object2)); */

        /* 把deep改为true,表示深度合并对象 banana的对象的值相同的属性会被覆盖

           不相同的仍然保留 */

        console.log( $.extend(true,object1,object2))

    </script>

jQuery的extend扩展练习:

<script src="./jquery-1.12.4.js"></script>

    <script>

       /*  function fn1(obj,flag){

            var object2 = {

            banana:{price:200},

            durian:100

        };

        console.log($.extend(flag,obj,object2));

        }

        fn1(Object,false)

         */

        /* 1.把car1进行深度合并,把值打印到控制台上 */

        /* 2.把car1进行 不深度合并,把值打印到控制台上 */

        var car1 = {

            color:{name:'水晶白',price:'1000w'}

        }

        var car2 = {

            carname:'保时捷',

            color:{name:'帅库黑'}

        }

        console.log( $.extend(car1,car2))

        /* console.log( $.extend(true,car1,car2)) */

        function showCar(obj){

            var car1 = {

            color:{name:'水晶白',price:'1000w'}

        }

        $.extend(true,car1,obj)

        console.log(car1);

            document.write(`汽车的颜色:${car1.color.name}<br>`)

            document.write(`汽车的价格:${car1.color.price}`)

        }

        showCar()

    </script>

2.$.fn.extend()扩展一个或多个实例属性和方法:

<body>

    <button class="btn1">全选</button>

    <!-- <button class="btn2">取消全选</button> -->

    <h1>爱好</h1>

    睡觉:<input type="checkbox" >

    吃:<input type="checkbox">

    喝:<input type="checkbox">

    <!-- $.fn.extend()函数为jQuery扩展一个或多个实例属性和方法 -->

    <script src="./jquery-1.12.4.js"></script>

    <script>

        /* $.fn是jQuery的原型对象

           $.fn.extend()方法用于为jQuery的原型添加新的属性和方法

           这些方法可以再jQuery实例对象上调用 */

       /* $.fn.extend({

           consoleFn:function(){

               console.log('我自己给jq打印方法');

           }

       })

       $('body').consoleFn();

       $('body').css('background','pink') */

       $.fn.extend({

           checked1:function(){

               /* this 代表jq对象 input元素的集合 */

               console.log(this);

               this.each(function(i,e){

               console.log(i,e);

               e.checked = true

               })

           }

       })

       $.fn.extend({

           checked2:function(){

               //this 代表jq对象 input元素的集合

               console.log(this);

               this.each(function(i,e){

               console.log(i,e);

               e.checked = false

               })

           }

       })

       var flag = true

       $('.btn1').click(function(){

           if(flag){

            $(this).text('取消全选')

         $('input').checked1();

         flag = false

           }else{

            $(this).text('全选')

         $('input').checked2();

         flag = true

           }

       })

       /* $('.btn2').click(function(){

         $('input').checked2()

       }) */

    </script>

</body>

3.jQuery的框架分析:

<style>

        .div1 {

            background-color: red;

            width: 150px;

            height: 150px

        }

        .blue{

            background: blue;

        }

    </style>

</head>

<body>

    <div class="div1" ></div><button>点我</button>

    <!-- jQuery源码的第一行到最后一行是一个匿名函数 -->

    <script src="./3.框架分析.js"></script>

    <script>

        /* console.log($);

        $() */

        /* $('.div1', 'background', 'red')

        $('.div1', 'width', '200px')

        $('.div1', 'height', '200px') */

        /* $('.div1').css('background','red')

        $('.div1').hide()

        $('.div1').addClass('.div1') */

        /* $('.div1').addClass('blue') */

        $('button').click(function(){

            $('.div1').addClass('blue')

        })

    </script>

</body>

jQuery的js源码:

/* ()括起来的目的是 把()内部的代码解释成一个表达式 */

        //JQ框架源代码

        (function(){

            /* console.log('Hellow 你好'); */

            /* var a = '你好 同学'

            $ = function $ (){

                document.write(a)

            } */

            function $(element){

                let ele = document.querySelector(element)

                console.log(ele);

                ele.css = function(key,value){

                    ele.style[key] = value

                }

                /* 实现show和hide的方法 */

                ele.hide = function(){

                    this.style.display = 'none'

                }

                ele.show = function(){

                    this.style.display = 'block'

                }

                /* 实现jq的removeClass 和 addClass */

                ele.removeClass = function(className){

                    console.log(this.className);

                    /* let str = this.className.replace(className,'')

                    console.log(str); */

                    this.className = this.className.replace(className,'')

                }

                ele.addClass = function(className){

                    /* 原生的className会覆盖之前的类名 */

                    this.className = this.className + ' ' +className

                }

                ele.click = function(callback){

                    this.onclick = callback

                }

                console.log(ele);

                return ele

            }

            /* 思路:$('.div1')返回一个元素对象,元素对象里面有一个css方法 可以传参

           改变$('.div1')的样式 */

            /* 把局部的方法$ 挂载到window上变成全局的就可以使用了 */

            window.$ = $

        })()

4.jQuery转原生对象:

<body>

    <h1>你真棒</h1>

    <script src="./jquery-1.12.4.js"></script>

    <script>

       /* 原生转JQ对象 */

       let h1 = document.querySelector('h1')

       console.log($(h1).get[0]);

       /* jq对象转原生的方法 */

       /* 第一种$(h1)[0] */

       /* 使用$(h1).get(0)方法 可以把单个的jq元素转成原生dom对象 */

    </script>

</body>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容