window.jQuery = function (nodeOrSelector){ //在全局环境下创建 jQuery 对象,创建之初想到节点有可能是字符串的情况
let nodes = {} //创建一个容纳所有符合条件的节点纯对象组
if (typeof nodeOrSelector === 'string') { //判断传入的节点类型是否为字符串
let temp = document.querySelector(nodeOrSelector) //如果为字符串,则获取所有符合条件的节点,返回一个伪数组
for(let i = 0;i< temp.length;i++){ //遍历这个得到的伪数组
nodes[i] = temp[i] // 将伪数组内的内容传给空对象 nodes
}
nodes.length = temp.length // 传递完毕,将伪数组内的 length 属性的 key 及value传给 nodes 对象
} else if(nodeOrSelector instanceof Node){ //如果函数传入的参数确为节点
nodes = { //将参数传给 nodes 对象的第一个属性‘0’中,同时设定对象内的 length 值为1
0:nodeOrSelector,
length:1
}
}
nodes.addClass:function(value){ //为 nodes 对象设定方法‘addClass’,方法参数为 value
for(let i=0; i<nodes.length;i++){ //遍历 nodes 对象内的所有属性,也就是节点
nodes[i].classList.add(value) //为 nodes 内每个属性(也就是节点)的class 加上传入的 value 值
}
},
nodes.setText:fucntion(value){ //为 nodes 对象设定方法‘setText’,方法参数为 value
for(let i=0; i<nodes.length;i++){ //遍历 nodes 对象内的所有属性,也就是节点
node[i].textContent = value //给 nodes 内每个属性(也就是节点)的文本替换为传入的 value 值
}
}
return nodes //返回 nodes 对象
}
window.$ = jQuery
var $div = $('div')
$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi
初步实现 jQuery 思想的细节记录
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...
- 摘要 本系列文章将详细分析iOS的MVVMR架构模式,并基于Swift的响应式、函数式编程框架RxSwift提供相...
- 孩子学习英语,要从最最简单,最最基础的开始,而且都是要分阶段的学习,那么今天我来告诉大家有那些阶段,这些是常熟爱贝...
- 雅思的大作文是雅思考试过程中最有挑战的部分,也是限制很多同学4个7,4个8的弱项。 这个系列的文章,我将前人的经验...