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

二十多行代码实现一个简易 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,467评论 0 44
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,394评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,202评论 0 1
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,350评论 0 3
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,623评论 0 11