JS#4 jQuery初探

作者: Yixi_Li | 来源:发表于2018-12-05 22:00 被阅读8次

初探jQuery简单源码

1.封装两个函数

function getSiblings(node){}
function addClass(node, classes){}

2.命名空间

var dom = {}
dom.getSiblings(node)
dom.addClass(node, {a: true, b: false})

3.能不能把 node 放在前面

node.getSiblings()
node.addClass()

(1)方法一:扩展 Node 接口
直接在 Node.prototype 上加函数
(2)方法二:新的接口 BetterNode

function Node2(node){
return {
element: node,
getSiblings: function(){ },
addClass: function(){ }
}
}
let node =document.getElementById('x')
let node2 = Node2(node)
node2.getSiblings()
node2.addClass()

4.把 Node2 改个名字吧

function jQuery(node){
return {
element: node,
getSiblings: function(){ },
addClass: function(){}
}
}
let node =document.getElementById('x')
let node2 =jQuery(node)
node2.getSiblings()
node2.addClass()

5.再给个缩写吧 alias

window.$ = jQuery

例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .red{
            color:red;
        }
    </style>
</head>
<body>
<div id="item">111</div>
<script>
    window.jQuery=function(nodeOrSelector) {
        let nodes = {};
        if (typeof  nodeOrSelector === 'string') {
            let temp = document.querySelectorAll(nodeOrSelector);
            console.log(temp);
            for (let i = 0; i < temp.length; i++) {
                nodes[i] = temp[i];
            }
            nodes.length = temp.length;
            console.log(nodes);
        }
        else if (nodeOrSelector instanceof Node) {
            nodes = {
                0: nodeOrSelector,
                length: 1
            }
        }
      
        nodes.addClass=function(value){
            for(let i=0;i<nodes.length;i++){
                nodes[i].classList.add(value);
            }
        }

        nodes.setText= function (value) {
            for(let i=0;i<nodes.length;i++){
                nodes[i].textContent=value;
            }
        }
        return nodes;
    }

    window.$ = jQuery;
    var $div = $('div');
    $div.addClass('red'); // 可将所有 div 的 class 添加一个 red
    $div.setText('hi'); // 可将所有 div 的 textContent 变为 hi
</script>
</body>
</html>

相关文章

  • JS#4 jQuery初探

    初探jQuery简单源码 1.封装两个函数 function getSiblings(node){}functio...

  • 初探jQuery

    实现一个jQuery的API 传一个选择器或节点 为nodes添加类,并且遍历nodes 遍历nodes,并且改变...

  • jQuery 初探

    在网页中,常常使用 HTML、CSS、javascript HTML 用于页面的布局,以及一些组件的布放 CSS ...

  • 初探jQuery

    封装一个函数html部分 选项1 选项2 选项3 选项4 选项5 js部分function getSi...

  • jQuery初探

    造两个简单版的jQuery函数 面试题

  • jQuery初探

    1. 基础 什么是jQuery对象? --- 就是通过jQuery包装DOM对象后产生的对象。jQuery对象是j...

  • Jquery初探

    node.querySelectorAll获取到的是一个伪数组,为了以后使用方便应该变成一个简单的对象。 一个对象...

  • 初探jQuery

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

  • JQuery初探

    jQuery 在兼容性方面做得很好,1.7 版本兼容到 IE 6 jQuery 还有动画、AJAX 等模块,不止 ...

  • jQuery初探

    自己封装两个函数 第一个函数,查询一个节点的兄弟姐妹 首先,先实现以下怎么获取一个节点的兄弟姐妹,并将其全部放到一...

网友评论

    本文标题:JS#4 jQuery初探

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