美文网首页
对jQuery的初步认知2018-11-01

对jQuery的初步认知2018-11-01

作者: 龍光射牛斗 | 来源:发表于2018-11-01 19:19 被阅读0次

jQuery可以看作为多个函数的集合,是一个构造函数,它接受一个参数,这个参数可能是node,然后返回一个方法对象去操作这个node。
下面用addClass来举例说吧。

<div>dota21</div>
<div>dota22</div>
<div>dota23</div>

我需要为每个div增加一个名称为red的class,使之文字颜色变为红色

 let div=document.querySelectorAll('div')
        for(let i=0;i<div.length;i++){
            div[i].classList.add('red')}

这是我一般的写法
把函数封装下

 function addClass(node,classes){
            let div=document.querySelectorAll(node)
            for(let i=0;i<div.length;i++){
                div[i].classList.add(classes)
            }
        }
  addClass('div','red')

这一个函数就好比一个罐子,为了方便搬运,需要放到一个箱子里面去,我们给箱子命名为box,并作为全局变量

window.box=function(node){
            return{
                addClass: function(classes){
                let div=document.querySelectorAll(node)
                for(let i=0;i<div.length;i++){
                    div[i].classList.add(classes)
                }
            }
            }
            
        }
box('div').addClass('red')

jQuery是可以同时传入node和选择器的

window.box=function(nodeOrSelector){
        let nodes={}
        if(typeof nodeOrSelector ==='string'){
            let temp=document.querySelectorAll(nodeOrSelector)
            for(let i=0;i<temp.length;i++){
                nodes[i]=temp[i];
                nodes.length=temp.length;
            }
       //如果是选择器,那么取到的对象是大于1的,是个伪数组
        }else if(nodeOrSelector instanceof Node){
            nodes={
                0:nodeOrSelector,
                length:1
            }//为和上面一致,也用数组表示
        }
       //上面代码就是对传参进行处理
        nodes.addClass=function(classes){
            classes.forEach(function(value){
                for(let i=0;i<nodes.length;i++){
                    nodes[i].classList.add(value)
                }//闭包:当一个函数使用了函数外面声明的变量时,我们把这个函数和变量称为闭包。
            })
        }
     
        return nodes;
    }
      box('div').addClass('red')

这个box其实就可以命名为jQuery,下面为完整代码

window.jQuery=function(nodeOrSelector){
        let nodes={}
        if(typeof nodeOrSelector ==='string'){
            let temp=document.querySelectorAll(nodeOrSelector)
            for(let i=0;i<temp.length;i++){
                nodes[i]=temp[i];
                nodes.length=temp.length;
            }
            console.log(nodes)
        }else if(nodeOrSelector instanceof Node){
            nodes={
                0:nodeOrSelector,
                length:1
            }
        }
       
        nodes.addClass=function(classes){
            classes.forEach(function(value){
                for(let i=0;i<nodes.length;i++){
                    nodes[i].classList.add(value)
                }
            })
        }
        nodes.setText=function(text){
            for(let i=0;i<nodes.length;i++){
                nodes[i].textContent=text;
            }
        }
        return nodes;
    }
    window.$=jQuery
    var $div=$('div')
    $div.addClass(['red'])

相关文章

  • 对jQuery的初步认知2018-11-01

    jQuery可以看作为多个函数的集合,是一个构造函数,它接受一个参数,这个参数可能是node,然后返回一个方法对象...

  • 对营销的初步认知

    经过最近的学习,接触到了一些营销的基本法则,和思路。我觉得将我能理解的东西总结为一句话就是:“思路决...

  • 对学习的初步认知

    人类的学习行为是人类进化的内在动力,那什么是学习,为什么同样都是“人模人样”,有些人乐于学习,善于学习,学习能力超...

  • 对“社群”的初步认知

    说到群,我们一点也不陌生,一打开手机的微信、QQ各种群消息就会一涌上来,那么在这些群里面,哪些是社群呢? 对于一个...

  • jQuery初步

    一、jQuery的特点 (1)轻量级 (2)强大的选择器 (3)出色的DOM封装 (4)可靠的事件处理机制 (5)...

  • 浅谈对“运营”的初步认知

    其实,由于目前工作经验和能力有限,对于运营的认知可能还比较肤浅,入门还是源于老黄写的《运营之光》这本书。 宏观上,...

  • 宝宝对餐桌文化的初步认知

    ——平子·2019.9.20(334) 又到了周五,宝宝从住宿班回来了,每周也许就是如此1~2次的一家齐聚...

  • 对“理念世界”认知的初步整理

    理念世界说了什么? 回答了我是谁?我就是“觉”,或者说我就是“觉性”。我心即宇宙,宇宙即我心。我与宇宙的本质是“一...

  • jQuery Mobile 构建手机 Web 网站介绍

    jQuery Mobile 构建手机 Web 网站介绍 jQuery Mobile 认知 jQueryMobile...

  • 我对我的情绪的初步认知

    情绪是指人对认知内容的特殊态度,是以个体的愿望和需要为中介的一种心理活动。情绪包含情绪体验、情绪行为、情绪唤醒和对...

网友评论

      本文标题:对jQuery的初步认知2018-11-01

      本文链接:https://www.haomeiwen.com/subject/fjexxqtx.html