美文网首页
初探jQuery

初探jQuery

作者: 鹧鸪少 | 来源:发表于2018-01-12 14:32 被阅读0次
实现一个jQuery的API
  • 传一个选择器或节点
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添加类,并且遍历nodes
  nodes.addClass = function(classes) {
     var classes = [classes] 
      classes.forEach((value) => {
        for (let i = 0; i < nodes.length; i++) { 
          nodes[i].classList.add(value)
        }
      })
    }
  • 遍历nodes,并且改变类的文本
  nodes.setText = function(text) {
    for (let i = 0; i < nodes.length; i++) { 
      nodes[i].textContent =text
    }
  }
  return nodes
}
  • 调用API操作nodes
window.$ = jQuery
var $div = $('div') 
$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi
</script>
完整代码
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>

<body>
  <div id="a">red</div>
  <div id="b">red</div>
  <div id="c">red</div>
  <div id="d">red</div>
  <div id="e">red</div>
</body>
</html>

<script>
window.jQuery = function(nodeOrSelector) {
  let nodes = {}      //用nodes把节点和选择器都装起来
  if (typeof nodeOrSelector === "string") {  //判断一下nodeOrSelector是节点还是一个选择器
    let temp = document.querySelectorAll(nodeOrSelector)
    for (let i = 0; i < temp.length; i++) {   //遍历所有的节点并且把它们都添加到nodes里
      nodes[i] = temp[i]     
    }
    nodes.length = temp.length
  } else if (nodeOrSelector instanceof Node) {
    nodes = {
      0: nodeOrSelector,
      length: 1
    }
  }

  nodes.addClass = function(classes) {
     var classes = [classes] 
      classes.forEach((value) => {
        for (let i = 0; i < nodes.length; i++) {   //遍历nodes
          nodes[i].classList.add(value)
        }
      })
    }
  
  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
</script>
  

相关文章

  • 初探jQuery

    实现一个jQuery的API 传一个选择器或节点 为nodes添加类,并且遍历nodes 遍历nodes,并且改变...

  • jQuery 初探

    在网页中,常常使用 HTML、CSS、javascript HTML 用于页面的布局,以及一些组件的布放 CSS ...

  • 初探jQuery

    封装一个函数html部分 选项1 选项2 选项3 选项4 选项5 js部分function getSi...

  • jQuery初探

    造两个简单版的jQuery函数 面试题

  • jQuery初探

    1. 基础 什么是jQuery对象? --- 就是通过jQuery包装DOM对象后产生的对象。jQuery对象是j...

  • Jquery初探

    node.querySelectorAll获取到的是一个伪数组,为了以后使用方便应该变成一个简单的对象。 一个对象...

  • 初探jQuery

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

  • JQuery初探

    jQuery 在兼容性方面做得很好,1.7 版本兼容到 IE 6 jQuery 还有动画、AJAX 等模块,不止 ...

  • jQuery初探

    自己封装两个函数 第一个函数,查询一个节点的兄弟姐妹 首先,先实现以下怎么获取一个节点的兄弟姐妹,并将其全部放到一...

  • JS#4 jQuery初探

    初探jQuery简单源码 1.封装两个函数 function getSiblings(node){}functio...

网友评论

      本文标题:初探jQuery

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