美文网首页让前端飞JQuery
自己创造一个jQuery

自己创造一个jQuery

作者: 小7丁 | 来源:发表于2018-12-28 10:29 被阅读5次

一、在window上自己命名一个空间

  1. 首先写出ul>li*5
  2. window上有一个属性xjjdom,他上面有两个方法getSiblings和addClass
    <ul>
    <li id="item1">选项1</li>
    <li id="item2">选项2</li>
    <li id="item3">选项3</li>
    <li id="item4">选项4</li>
    <li id="item5">选项5</li>
  </ul>
  <script>
    window.xjjdom = {}
    xjjdom.getSiblings = function getSiblings (node) {
      var allChildren = node.parentNode.children
      var array = {
        length: 0
      }
      for (let i = 0; i < allChildren.length; i++) {
        if (allChildren[i] !== node) {
          array[array.length] = allChildren[i]
          array.length += 1
        }
      }
      return array
    }
    var classes = ['a', 'b', 'c']
    xjjdom.addClass =  function addClass (node, classes) {
      classes.forEach(i => node.classList.add(i))
    }
    </script>

然后就可以用下面的方式来调用:

xjjdom.getSiblings(item3)
xjjdom.addClass(item3, classes)

二、能否把节点提前到前面

变成如下的方式:

node.getSiblings()
node.addClass()
  1. 在node.prototype上写方法
Node.prototype.getSiblings = function getSiblings () {
      var allChildren = this.parentNode.children
      var array = {
        length: 0
      }
      for (let i = 0; i < allChildren.length; i++) {
        if (allChildren[i] !== this) {
          array[array.length] = allChildren[i]
          array.length += 1
        }
      }
      return array
    }
    var classes = ['a', 'b', 'c']
    Node.prototype.addClass =  function addClass (classes) {
      classes.forEach(i => this.classList.add(i))
    }
    item3.getSiblings()
    item3.addClass(classes)
  1. 重新写一个新的接口
    Node2里面写一个方法对node进行操作,并且里面有一些属性方法。
    这时候将node2改成jQuery就可以了。
window.Node2 = function (nodeOrSelector) {
      let node
      if (typeof nodeOrSelector === 'string') {
        node = document.querySelector(nodeOrSelector)
      } else {
        node = nodeOrSelector
      }
      return {
        getSiblings: function () {
          var allChildren = node.parentNode.children
          var array = {
            length: 0
          }
          for (let i = 0; i < allChildren.length; i++) {
            if (allChildren[i] !== this) {
              array[array.length] = allChildren[i]
              array.length += 1
            }
          }
          return array
        },
        addClass: function (classes) {
          classes.forEach(i => node.classList.add(i))
        }
      }
    }
    var node2 = Node2(item3)
    node2.getSiblings()
    node2.addClass(['a', 'b', 'c'])

再加一个缩写
window.$ = jQuery

相关文章

  • 自己创造一个jQuery

    一、在window上自己命名一个空间 首先写出ul>li*5 window上有一个属性xjjdom,他上面有两个方...

  • jQuery源码解析(整体架构)

    平常我们使用jQuery时一般主要为以下两种情况: 根据使用方式,可以推断出jQuery: 是一个能创造出不同对象...

  • jQuery日历插件开发

    在jquery的学习中,经常碰到使用jQuery插件的使用,后来想着自己应该动手写一个jQuery插件,提高自己的...

  • 自己动手封装一个JQuery(简版)

    目标 通过对JQuery使用的分析,实现一个简版的自己的JQuery 先看一个JQuery的使用Demo 这个代码...

  • 封装一个自己的js库

    仿照jQuery封装一个自己的js库 接下来,我讲封装一个仿jQuery的库,主要包含jQuery中绑定,css,...

  • jQuery原理(自己封装一个jQuery)

    jQuery原理 1.来看一下jQuery自己的结构 (function( window, undefined )...

  • 初探jQuery

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

  • 01. jQuery 基础

    jQuery简介 jQuery是一个JavaScript库; jQuery下载地址http://jquery.co...

  • jQuery(一)_选择器

    jQuery(一)_选择器 1.jQuery简介 jQuery是一个JavaScript函数库。jQuery是一个...

  • jQuery的实质, 自己写一个jQuery

    jQuery 的实质: 在了解了python的装饰器之后, 发现jQuery的本质就是一个装饰器, 只是它接受了不...

网友评论

    本文标题:自己创造一个jQuery

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