模仿jQuery实现方式的代码 以便更好理解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].innerText = text;
    }
  }
  return nodes
}
window.$=jQuery
var $div = $('div')
$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

以上代码,其实就是jquery库方法实现的一个例子。

首先,声明一个全局函数jQuery,函数通过传参数,通过判断参数的类型及参数是否为节点元素来获取对应的nodes,函数里写有addClass方法和setText方法。

.addClass方法通过传参数(样式的className),遍历所有nodes并加上提供的class类

.setText方法,把文本内容当作参数传递到函数中,遍历所有的nodes并通过textContent属性改变标签的文本内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值