美文网首页
自己做一个jQuery

自己做一个jQuery

作者: zzzZink | 来源:发表于2018-04-25 14:20 被阅读0次

什么是jQuery?

jQuery本质只是一个中间层,提供一套统一易用的DOM操作接口。

那么,今天我们就来自己实现一个简易版的jQuery
首先我们来实现选择器

window.jQuery = function(nodeOrSelector){
  let nodes = {}  //统一使用对象
  //首先我们需要判断用户是想获取多个元素节点还是一个
  if(typeof nodeOrSelector === 'string'){
    let temp = document.querySelectorAll(nodeOrSelector)
    //遍历临时对象temp,将他的值放入nodes内,这样我们就能得到一个纯净的对象,而不是querySelectorAll返回的NodeList
    for(let i=0;i<temp.length;i++){
      nodes[i] = temp[i]
    }
    nodes.length = temp.length
  //如果用户传入的是一个节点,那么就只针对这个节点进行后续操作
  } else if(nodeOrSelector instanceof Node){
    nodes = {
      0: nodeOrSelector,
      length: 1
    }
  }
  return nodes  //返回nodes
}

接下来我们为nodes添加addClass方法:

  //classes是用户想要添加的class名
 nodes.addClass = function(classes){
    //遍历nodes,为nodes内每一个元素节点添加class
    for(let i=0;i<nodes.length;i++){
      nodes[i].classList.add(classes)
    }
  }

最后我们为nodes添加setText方法:

//text是用户想要添加的文本
nodes.setText = function(text){
    //遍历nodes,为nodes内每一个元素节点的textContent添加text
    for(let i=0;i<nodes.length;i++){
      nodes[i].textContent = text
    }
  }

最后我们再创建一个window对象

window.$ = window.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
  } else if(nodeOrSelector instanceof Node){
    nodes = {
      0: nodeOrSelector,
      length: 1
    }
  }
  
  nodes.addClass = function(classes){
    for(let i=0;i<nodes.length;i++){
      nodes[i].classList.add(classes)
    }
  }
  
  
  nodes.setText = function(text){
    for(let i=0;i<nodes.length;i++){
      nodes[i].textContent = text
    }
  }
  
 return nodes
}

window.$ = window.jQuery
var $div = $('div')  //获取所有div元素
$div.addClass('red')
$div.setText('hi')

ok,这样我们就初步实现了自己的简易版jQuery(以上使用到了闭包)。

相关文章

  • 自己做一个jQuery

    什么是jQuery? jQuery本质只是一个中间层,提供一套统一易用的DOM操作接口。 那么,今天我们就来自己实...

  • 正则表达式(2016/11/26)

    最近做项目,需要对表单内容做一个提交前的确认,采用jQuery+jQuery-Validate插件进行表单校验。 ...

  • 用 jQuery 做个轮播

    初次体验jQuery 之后,体验一下jQuery强大之处,做一个简单的轮播,实现图片切换。 点击按钮切换轮播 页面...

  • jquery

    最近有在看jquery,之前做一个项目的时候只是泛泛的了解了一下。 在我看来,jquery是javascript衍...

  • 自制jQuery

    自己做一个jQuery的思路 封装两个函数 → 添加命名空间 → 扩展Node原型/无侵入设置 1、封装两个函数 ...

  • jquery.i18n.properties的使用讲解与实例

    最近在做一个主页时需要用国际化,用HTML+JS,还有jQuery, 于是就选择了jquery.i18n.prop...

  • A29-用jQuery做个轮播

    这次我们将用jQuery做一个轮播 在遵循原则:内容(HTML)、样式(CSS)、行为(JavaScript)分离...

  • jQuery日历插件开发

    在jquery的学习中,经常碰到使用jQuery插件的使用,后来想着自己应该动手写一个jQuery插件,提高自己的...

  • 我的时间管理

    1.定一个周计划(本周学完jQuery+bootstrap,并做一个具有增删改查功能的网页) 2.根据自己的周计划...

  • 模拟回车键功能

    jquery 自己引入

网友评论

      本文标题:自己做一个jQuery

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