美文网首页
二十多行代码实现一个简易 jQuery

二十多行代码实现一个简易 jQuery

作者: Uohkowg | 来源:发表于2019-01-31 11:41 被阅读0次

    二十多行代码实现一个简易 jQuery

    1. 先写一个叫 jQuery 的构造函数,并且将它作为全局变量,方便调用,并且这个函数可以接受一个选择器字符串用于选择符合条件的元素,或直接接受一个节点,最后返回一个伪数组的节点对象。
    window.jQuery = function(nodeOrSelector) {
      let nodes = {};
      if (typeof nodeOrSelector === 'string') {
        nodes = document.querySelectorAll(nodeOrSelector);
      } else if (nodeOrSelector instanceof Node) {
        nodes = {
          0: nodeOrSelector,
          length: 1
        };
      }
    
      return nodes;
    };
    

    利用typeof操作符来判断参数是否是字符串,若为true,则利用DOM的querySelectorAll获取所有相关节点,否则再用instanceof判断参数是否为一个Node对象,若是则构造一个长度为1的伪数组。

    1. 现在我们获得了一个可供操作的伪数组对象nodes了,但是还没有提供用于操作它的方法。我们为它编写两个方法addClasssetText,它们的逻辑都差不多,都是先接受一个参数,然后利用for循环遍历伪数组对象nodes,最后利用节点自带的方法对每个节点进行修改。
    window.jQuery = function(nodeOrSelector) {
      let nodes = {};
      if (typeof nodeOrSelector === 'string') {
        nodes = document.querySelectorAll(nodeOrSelector);
      } else if (nodeOrSelector instanceof Node) {
        nodes = {
          0: nodeOrSelector,
          length: 1
        };
      }
    
      nodes.addClass = function(className) {
        for (let i = 0; i < nodes.length; i++) {
          nodes[i].classList.add(className);
        }
      };
    
      nodes.setText = function(text) {
        for (let i = 0; i < nodes.length; i++) {
          nodes[i].textContent = text;
        }
      };
    
      return nodes;
    };
    
    1. 给它一个缩写$,让它看起来更像jQuery
    window.$ = jQuery;
    
    1. 这样一个简易的jQuery就实现了,现在可以试着使用它了
    $('li').addClass('red');  //为所有li标签添加一个叫red的class
    $('li').setText('Hello');   //将所有li标签的文本内容改为Hello
    

    相关文章

      网友评论

          本文标题:二十多行代码实现一个简易 jQuery

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