实现一个jQuery的API

修改标签内容及字体颜色#

利用遍历可实现对标签内容及颜色的更改:

Copy
let liTags = document.querySelectorAll('ul > li') for (let i = 0; i < liTags.length; i++) { liTags[i].classList.add('red') } for (let i = 0; i < liTags.length; i++) { liTags[i].textContent = '修改' }

封装函数#

将上例代码封装成一个函数,代码如下:

Copy
function addClass(selector, classes) { let nodes = document.querySelectorAll(selector) for (let key in classes) { let value = classes[key] if (value) { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.add(key) } } else { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.remove(key) } } } } function setText(selector, text) { let nodes = document.querySelectorAll(selector) for (let i = 0; i < nodes.length; i++) { nodes[i].textContent = text } } let classes = { 'red': true, 'green': false } addClass.call(undefined, 'ul>li', classes) setText.call(undefined, 'ul>li', '封装函数')

添加命名空间#

Copy
window.myDom = { setClass: function(selector, classes) { let nodes = document.querySelectorAll(selector) for (let key in classes) { let value = classes[key] if (value) { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.add(key) } } else { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.remove(key) } } } }, setText: function(selector, text) { let nodes = document.querySelectorAll(selector) for (let i = 0; i < nodes.length; i++) { nodes[i].textContent = text } } } myDom = window.myDom let classes = { 'red': true, 'green': false } myDom.setClass.call(undefined, 'ul>li', classes) myDom.setText.call(undefined, 'ul>li', '添加命名空间')

最后的完善#

Copy
let jQuery = function(selector) { let nodes = {} if (selector) { nodes = document.querySelectorAll(selector) } nodes.setClass = function(classes) { for (let key in classes) { let value = classes[key] if (value) { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.add(key) } } else { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.remove(key) } } } } nodes.setText = function(text) { for (let i = 0; i < nodes.length; i++) { nodes[i].textContent = text } } return nodes } window.jQuery = jQuery window.$ = jQuery let classes = { 'red': true, 'green': true } let $liTags = $('ul>li') $liTags.setClass.call($liTags, classes) $liTags.setText.call($liTags, '完成')

代码预览#

预览 - 实现一个jQuery的API

posted @   LqZww  阅读(65)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示
CONTENTS