美文网首页
简易的jQuery

简易的jQuery

作者: 尤里安的红茶 | 来源:发表于2018-05-02 11:43 被阅读42次

@(Inbox)

本文会用最简单的形式来模仿jQuery源码。

jQuery看着是什么样子的?

$("li").addClass("redColor");

$(美元符号)是jQuery标志性符号,最开头为选择器

可以分析出jQuery的基本公式为 $('').xxx,也就是名称(选择器选中的元素) + 动作

如何模仿?

$('')显然是一个主语,代表着是谁,从这里便可以推断出这是一个选择器。

首先制作出美元符号:

window.jQuery = function (){
    //TODO 里面还有很多代码需要写
}

window.$ = jQuery

原理很简单,就是创建一个全局对象$而已

接下来便是选择器,而jQuery的选择器有几个特性

  • 返回的是一个伪数组
  • 参数可以传字符串也可以传标签元素
window.jQuery = function (nodeOrSelector){
    //选择元素 变成伪数组
    let nodes = {}
    if(typeof nodeOrSelector === 'string'){
        let tempNodes = document.querySelectorAll(nodeOrSelector)
        for(let i = 0;i < tempNodes.length;i++){
            nodes[i] = tempNodes[i]
        }
        nodes.length = tempNodes.length
    }else if(nodeOrSelector instanceof Node ){
        nodes[0] = nodeOrSelector
        nodes.length = 1
    }
    
    //返回伪数组
    return nodes
}

window.$ = jQuery

最后添加一些和jQuery一样的和你自己想扩展的方法,便OK了。

window.jQuery = function (nodeOrSelector){
    //选择元素 变成伪数组
    let nodes = {}
    ......//省略选择器代码
    //增加类名
    nodes.addClass = function(classes){
      for(let i = 0;i < this.length;i++){
        this[i].classList.add(classes)
      }
    }
    //为内容赋值
    nodes.setText = function(content){
      for(let i = 0;i < this.length;i++){
        this[i].textContent = content
      }
    }
    //返回伪数组
    return nodes
}

window.$ = jQuery

//使用
$("li").addClass("redColor")

总结

自此简易的jQuery就完成了,其实很多看着高大上的三方库,都可以用最简单的方法来模仿实现。

当然,在真正的框架或者库的开发中,需要添加大量防御代码,以及大量的需求兼容,所以最终优秀的类库会变得使用会越来越方便,但源码也越来越难读。
不过我始终相信越是优秀的三方库,其核心原理必定简单明了,其核心结构必定清晰灵活。

相关文章

  • 从零开始的jQuery插件封装

    jQuery插件简易封装方法。 jQuery插件机制 jQuery.extend( [deep ], target...

  • 简易的jQuery

    @(Inbox) 本文会用最简单的形式来模仿jQuery源码。 jQuery看着是什么样子的? $(美元符号)是j...

  • 手写一个简易的Jquery考虑插件及扩展性

    通过手写一个简易的DOM节点查询功能的Jquery实例,了解Jquery内部实现原理及理解Class与继承。 页面...

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

    二十多行代码实现一个简易 jQuery 先写一个叫 jQuery 的构造函数,并且将它作为全局变量,方便调用,并且...

  • jQuery 的简易实现思路

    概述 总所周知,jQuery是一个早期非常强大的js库,它小巧、快速、特性丰富,它在HTML的文档遍历、DOM操作...

  • jquery 简易跑马灯

    思路: 1.css 需要的两种切换样式 .circle和.circle_active 2.设置定时器 带参数 倒计...

  • jquery制作简易tab选项

    CSS代码 *{ margin: 0px;padding: 0px; } #main{ width: 300px...

  • jquery选择器

    简介 jQuery是js的一个轻量级框架,兼容了各大浏览器,提供了dom、events、ajax的简易操作,jQu...

  • jQuery不过如此

    简易的JQuery 1.1单纯的获取所有兄弟元素 1.2为一个元素添加类2.1 封装函数 2.2 封装函数 3.命...

  • 一个简易jQuery的API

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

网友评论

      本文标题:简易的jQuery

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