美文网首页
类似 jQuery 的 API

类似 jQuery 的 API

作者: longqinusi | 来源:发表于2019-03-05 19:47 被阅读0次

我们的目标,能够实现以下功能

    window.jQuery = ???

    window.$ = jQuery

    var $div = $('div')

    $div.addClass('red') // 可将所有 div 的 class 添加一个 red

    $div.setText('hi') // 可将所有 div 的 textContent 变为 hi

首先,想用$和jQuery,直接声明成全局变量即可。

window.jQuery = function() {}    

window.$ = jQuery

我们要把jQuery和$封装成一个方法,可以选中dom元素。

在调用这个方法时,这里我们可以给它传一个dom元素,也可以传一个选择器(字符串)。

我们默认传递的是一个dom元素,即 let nodes = { 0: nodeOrSelector, length: 1 };

然后再对传递的参数类型用typeof进行判断,如果是'string'类型,那么我们把它作为一个选择器,用querySelectorAll来选中dom元素。

然后,将nodes返回。这就实现了用$和jQuery来作为选择器选中dom元素。而且我们返回的是一个纯净的伪数组,没有原生dom的方法和属性。

window.jQuery = function(nodeOrSelector) {

      let nodes = {

        0: nodeOrSelector,

        length: 1

      }

      if(typeof nodeOrSelector === 'string'){

        let temp = document.querySelectorAll(nodeOrSelector);

        for(let i=0; i<temp.length; i++){

          nodes[i] = temp[i];

        }

        nodes.length = temp.lenght;

      }

      return nodes

    }

然后,我们来对这个函数添加两个方法。

$div.addClass('red') // 可将所有 div 的 class 添加一个 red:

nodes.addClass = function(classes) {

        if(typeof classes === 'string'){

          for (let i = 0; i < nodes.length; i++) {

            nodes[i].classList.add(classes)

          }

        }else{

          for (let i = 0; i < nodes.length; i++) {

            classes.forEach( (value) => nodes[i].classList.add(value) )

          }

        }

      }

$div.setText('hi') // 可将所有 div 的 textContent 变为 hi:

nodes.setText = function(text) {

        for (let i = 0; i < nodes.length; i++) {

          nodes[i].textContent = text;

        }

      }

以上就是简单的模仿了3个jquery的api。选择器,addClass, setText。

最终的代码如下:

相关文章

  • 类似 jQuery 的 API

    我们的目标,能够实现以下功能 window.jQuery = ??? window.$ = jQuery var ...

  • 实现一个 jQuery 的 API

    本文通过使用原生DOM API实现类似于jQuery的元素添加类和获取元素文字的方法来理解jQuery的实现原理 ...

  • 实现一个 jQuery 的 API

    自己练习写一个类似jQuery的API,可以实现的功能为 $div.addClass('red') // 可将所有...

  • jQuery 初探:写一个类似jQuery的API

    前言(可忽略):最近因为一些自己的事情学习停滞了一段时间,再捡起来时就非常的艰涩,极大的打击了我的学习热情,结果导...

  • 实现一个 类似jQuery 的 API

    补全下面的代码: 可以看出我们要实现一个函数,调用这个函数传入标签名字的字符串,就能返回一个实例对象; 这个实例对...

  • 如何实现一个jQuery的api

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

  • 类似jQuery

    jOuery实际上就是一个构造函数,接收一个参数,这个参数可能是节点,它会返回一个方法对象,可以操控这个节点。ty...

  • jQuery

    jQuery学习: 最好的学习方法:查看jQuery的API jQuery下载: jQuery官网:http://...

  • 初识 jQuery API

    最近在了解 jQuery API的相关知识,方方老师通过自己写一个jQery API,告诉我们jQuery API...

  • jQuery--第二节--事件

    jQuery API 中文文档 : http://jquery.cuishifeng.cn/jQuery插件库...

网友评论

      本文标题:类似 jQuery 的 API

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