实现一个 jQuery 的 API

自己练习写一个类似jQuery的API,可以实现的功能为

$div.addClass('red') // 可将所有 div 的 class 添加一个 red

$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

一、先获取所有div,放在一个对象中

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

二、实现给每一个div添加class

for(let i=0;i<nodes.length;i++){
  nodes[i].classList.add("red")
}

然后把这个函数封装起来

nodes.addClass = function(classes) {
  for (let i = 0; i < nodes.length; i++) {
    nodes[i].classList.add(classes)
  }
}

三、实现把所有div的内容改成hi

for (let i = 0; i < nodes.length; i++) {
  nodes[i].textContent = "hi"
}

封装成函数

nodes.setText = function(text) {
  for (let i = 0; i < nodes.length; i++) {
    nodes[i].textContent = text
  }
}

四、全部写入一个对象,实现完整代码

window.jQuery = function(node) {
  let nodes = {}
  div = document.querySelectorAll(node)
  for (let i = 0; i < div.length; i++) {
    nodes[i] = div[i]
  }
  nodes.length = div.length
  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.$ = jQuery
var $div = $('div')

这样就可是实现
$div.addClass('red') // 可将所有 div 的 class 添加一个 red

$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 某统计网站的数据统计 ,使用jQuery的比例占70%左右。我们来看看jQuery 到底做了哪些事情,给开发者带来...
    怎么昵称阅读 233评论 0 1
  • 一、需求:构造一个名叫“ jQuery” 的 库,含有API:1.addClass():给所选元素添加一个clas...
    Zoey_h阅读 341评论 0 0
  • 在这里我们将实现两个功能,给一个div元素,添加多个classname,并把div元素的内容全部输出为‘hi’ 首...
    charllote8阅读 231评论 0 1
  • 上图,看最终结果: 过程中一些细节: 第一部分: 开启一个独立的命名空间,window.jQuery = {},可...
    地球心阅读 477评论 0 3
  • get和set放到了nodes.text里面,通过判断text是否为undefined去实现功能。 若要addCl...
    毛毛独角兽阅读 256评论 0 0