美文网首页
模仿jQuery实现addClass()和text()

模仿jQuery实现addClass()和text()

作者: jackie季 | 来源:发表于2018-08-16 11:51 被阅读0次

    今天我们模仿jQuery库实现addClass()方法添加类和text()方法读取或设置文本,要求单个或多个node均可使用:
    首先,声明一个全局函数jQuery

    window.jQuery = function (nodeOrSelector) {
                let nodes = {}
                if (typeof nodeOrSelector === 'string') {
                    let temp = document.querySelectorAll(nodeOrSelector)
                    for (let i = 0; i < temp.length; i++) {
                        nodes[i] = temp[i]
                    }
                    nodes.length = temp.length
                } 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) {
                    if (text === undefined) {
                        let arr = []
                        for (let i = 0; i < nodes.length; i++) {
                            arr.push(nodes[i].textContent)
                        }
                        return arr
                    } else {
                        for (let i = 0; i < nodes.length; i++) {
                            nodes[i].textContent = text
                        }
                    }
                }
    
                return nodes
            }
    

    HTML

        <div>aaa</div>
        <div>aaa</div>
        <div>aaa</div>
    

    CSS

        .red {
             color: red;
         }
    

    如果我们想通过 $ 符号获取页面元素,可以这样写:

    window.$ = jQuery
    let $div = $('div')
    

    这样就获取了页面中所有标签为div的元素了,再为它们添加样式:

    $div.addClass('red')
    
    image.png

    再修改它们的文本内容

    $div.setText('hi')
    
    image.png

    这只是模仿jQuery实现了几个小功能,真正的jQuery是很强大的,而且方法是要放在原型中的~

    相关文章

      网友评论

          本文标题:模仿jQuery实现addClass()和text()

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