jquery获取所有子元素遍历_看看jQuery怎么干活(初步思路)

1. jQuery接受一个字符串

2.拿到这个字符串nodeOrSelector

3.分析这个字符串,是字符串还是个节点

如果是字符串,就去找到对应的所有元素,遍历之后放到伪数组里

dcf8b4d3c00001ba3b9c26471d26a77c.png

如果是节点,就把节点放到伪数组里面

809e9dac48ec618cd2ccf33bed5909a9.png

4.这时候外面调用 addClass ,就会去遍历这个classes,逐个放到伪数组的每一项元素里面

2ac3564bc00ed43dad08d4969957da75.png

5. text这个函数,如果你传参数就是设置,不传参数就是获取。

2fb2a4fbb841fd88ab45d5ce49d6c214.png

总体是这样的一个逻辑:

你可以给我一个选择器,也可以给我一个节点,把找到的结果放到nodes里面,

你要用nodes时,在addClass api里用,这样你就可以调用addClass了,不是操作node2,而是操作nodes

node2就是函数的返回值nodes,其实就是

208097fe3ef02f493e79f3639b82d5b3.png


贴代码:

window.jQuery = function(nodeOrSelector){

let node = {}

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.setText = function(text){

if(text === undefined){

var texts = []

for (let i = 0; i < nodes.length; i++) {

texts.push(nodes[i].textContent)

}

return texts

}else{

for (let i = 0; i < nodes.length; i++) {

nodes[i].textContent = text

}

}

},

nodes.addClass = function(classes){

classes.forEach(value => {

for(let i = 0; i < nodes.length; i++){

nodes[i].classList.add(value)

}

})

}

return nodes

}

window.$ = jQuery

var $div = $('div')

$div.addClass('red') // 可将所有 div 的 class 添加一个 red

$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值