08-模拟jQuery实现两个需求

2019-04-14  本文已影响0人  陈光展_Gz

一、需求如下


window.jQuery = ???
window.$ = jQuery

var $div = $('div')
$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

题目中要求将所有 div 的 class 添加一个 red,以及将所有 div 的 textContent 变为 hi。

二、解决思路


window.jQuery = function (nodeOrSelector){
  let nodes = {}
  if(typeof nodeOrSelector === 'string'){
  var 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 = {o: nodeOrSelector,length = 1}
    }
  return nodes
  }
window.$ = jQuery
nodes.addClass = function(){
 
}
nodes.setText = function(){
 
}

三、完整代码


window.jQuery = function (nodeOrSelector){
  var nodes = {}
  if(typeof nodeOrSelector === 'string'){
  var 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 = {o: 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.$ = jQuery
var $div = $('div')
$div.addClass('red') 
$div.setText('hi')

四、总结


上一篇 下一篇

猜你喜欢

热点阅读