美文网首页
实现一个 jQuery 的 API

实现一个 jQuery 的 API

作者: 实肆 | 来源:发表于2019-04-02 10:29 被阅读0次

获取目标节点的兄弟节点

image.png
function getsiblings(node){
  var allchildren = node.parentNode.children
  var array ={length:0}
  for(let i=0;i<allchildren.length;i++){
    if(allchildren[i]!==node){
      arrary[array.length]=allchildren[i]
      arrary.length += 1
    }
  }
  return array
}

1.先获取该节点父节点的所有子标签,装入allchildren对象
2创建arrary对象
3.遍历所有父节点的子标签,把不是目标节点的标签放入arrary对象
4返回伪数组array
把执行一个功能的代码,装在一个函数对象中
getSibling中arry[arry.length]=allchildren[i]
因为返回的是array对象是伪数组,array中的key是array.length确定,一开始array.length=0,遍历一次后伪数组的length应该增加1,所以每一次遍历结束前array.length +=1。

addclass,添加classname

一个节点添加一个class

node.classList.add('string')

一个节点添加多个class

var classes=['a','b','c']
classes.forEach((value)=>x.classList.add(value))

一个节点的多个class即能添加又能删除

function addclass(classes){
  if(let key in classes){
    var value=classes[key]
    var methodName =value?add:remove
       node.classList[methodName](key)
      }
}

命名空间

image.png

addclass对一个元素添加或删除多个classname,classes中的名为true时添加入node的classname中,value为flase时从node的classname中移除对应的key。


image.png image.png

获取多个元素

image.png

返回值需要相同类型,当传入的参数(nodeOrSelector)是一个节点,也要构造一个伪数组


image.png

通过临时伪数组temp存放querySelectorAll返回的Nodelist(原型指向Node),再遍历temp把数据一个个放到nodes(对象,原型指向object.prototype)中


image.png image.png

注意函数结尾不写return nodes ,$div将为undefined

#window.$= jQuery
#var $div=$ ('div') 
#$div.addClass('red') 
#$div.setText('hi')

代码思路jquery是一个函数,函数返回一个对象,这个对象有addclass和setText两种方法。

window.jQuery =function(nodeOrSelector){
var nodes={}
    if(typeof nodeOrSelector==='string'){
          let temp=document.querySelectorAll(nodeOrSelector)
          for(let i=0;i<temp.length;i++){
          nodes[i]=temp[i]
          }
          node[length]=temp[length]
    }else if(nodeOrSelector instanceof node){
        nodes={0:nodeOrSelector,length:1}
      }
}
nodes.addclass=function(classes){
    if(let key in classes){
    var value=classes[key]
    var methodName =value?'add':'remove'
    for(let i = 0;i<nodes.length;i++){
       node[i].classList[methodName](key)
      }
}

声明变量key在classes对象中通过三元运算符判断key的boolean,当布尔值是true时,变量methodName的值为字符串add,遍历
全部的节点,添加或移除classes的key

相关文章

  • 初探jQuery

    jQuery API的实现 自己模拟jQuery的一个API预览:http://js.jirengu.com/pa...

  • 如何实现一个jQuery的api

    什么是jQuery 实现jQuery的api 实现jQuery的api说起来也很简单,就是对DOM进行封装。话不多...

  • 实现一个 jQuery 的 API

    实现一个 jQuery 的 API 实现步骤 命名空间模式 这个模式的调用为jQuery.addClass(ite...

  • 前端基础入门五(掌握jQuery的常用api,实现动态效果)

    jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常...

  • 用原生DOM实现一个jQuery的API

    今天第一次接触jQuery,先简单的实现一个jQuery的API,实现两个方法: addClass() setTe...

  • 实现一个 jQuery 的 API

    想要实现一个以下功能用原生js的DOM API来实现一个类jQuery API的功能 1、首先获取DOM元素 判断...

  • Angularjs选项卡

    用jQuery实现选项卡,通过操作dom节点实现,jQuery多数api方便操作dom。例如next()、sibl...

  • 2018-08-22

    实现JQuery之API 1.需求分析window.jQuery = ???window.div = div.ad...

  • 实现jQuery的API

    1. jQuery函数结构 jQuery函数要方便与输入一个选择器参数或则节点正确返回一个伪数组,便于对其明确执行...

  • 实现一个jQuery API

    通过以下四步实现jQuery: 接受一个node或选择器 封装成一个伪数组 在这个伪数组上加上几个API 把这个伪...

网友评论

      本文标题:实现一个 jQuery 的 API

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