继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

可想自己造一个jQuery库?(八)

Kodo
关注TA
已关注
手记 21
粉丝 165
获赞 1382
前言

1.虽然说市面上有许多讲解jQuery源码或者是也有类似如何搭建一个属于自己的javascript库的文章。
2.但毕竟更多数人的水平并没有达到单纯看源码解析就能读懂jQuery
3.如果你既不能通过书籍视频和他人文章的源码解析明白jQuery,也想自己实现一个jQuery的。
4.本系列就是以一些不同的方法手段,简单的代码,实现了一套与jQuery一样的API
5.最后在每篇文章的最后会留下github源码地址,希望能得到大家star的认可与支持,谢谢。

Lesson-7

新增 html,append,before,after,remove

html: function (value) {
    if (value === undefined) {
        return this[0].innerHTML;
    } else {
        for (var i = 0; i < this.length; i++) {
            this[i].innerHTML = value;
        }
    }
    return this;
}

html()方法我就用了这种很愚蠢的方法实现了!比起之前的data,attr,css什么的简单多了,大家可以自己继续完善.

接着是我们的重头戏,3个文档插入.我找到了一个原生js叼叼的方法

insertAdjacentHTML 来让我们去看下MDN是怎么解释的

概述

insertAdjacentHTML() 将指定的文本解析为 HTML 或 XML,然后将结果节点插入到 DOM 树中的指定位置处。该方法不会重新解析调用该方法的元素,因此不会影响到元素内已存在的元素节点。从而可以避免额外的解析操作,比直接使用 innerHTML 方法要快。

语法

element.insertAdjacentHTML(position, text);
position 是相对于 element 元素的位置,并且只能是以下的字符串之一:

beforebegin
element 元素的前面。
afterbegin
element 元素的第一个子节点前面。
beforeend
element 元素的最后一个子节点后面。
afterend
element 元素的后面。
text 是字符串,会被解析成 HTMLXML,并插入到 DOM 树中。

兼容性

Chrome Firefox IE Opera Safari
1.0 8.0 4.0 7.0 4.0

简直神器有木有?!

所以我们写一个这样的方法吧!

function domAppend(elm, type, str) {  //实现append、after、before操作
    elm.insertAdjacentHTML(type, str);
}

然后只需要传对应参数就好了!如此简单

append: function (str) {
    for (var i = 0; i < this.length; i++) {
        domAppend(this[i], 'beforeend', str);
    }
    return this;
},
before: function (str) {
    for (var i = 0; i < this.length; i++) {
        domAppend(this[i], 'beforeBegin', str);
    }
    return this;
},
after: function (str) {
    for (var i = 0; i < this.length; i++) {
        domAppend(this[i], 'afterEnd', str);
    }
    return this;
}

接着是remove方法,在这我只做删除自身节点,就没继续拓展了.大家可以自行完善

remove: function () { //只能删除自身
    for (var i = 0; i < this.length; i++) {
        this[i].parentNode.removeChild(this[i]);
    }
    return this;
}

您给予的star,就是给代码赋予灵魂.

github地址: https://github.com/MeCKodo/forchange/tree/master/lesson-7
可想自己造一个jQuery库?(七):http://www.imooc.com/article/2124

打开App,阅读手记
6人推荐
发表评论
随时随地看视频慕课网APP