J26 prevAll nextAll siblings index jq源码编写

190 阅读1分钟

1.获取节点的编写

1.获取所有的哥哥元素

function prevAll(node) {
	//上可以哥哥所有的节点
	let prev = node.previousSibling,
	//提前创建一个空间存储哥哥标签节点
		result = [];
	//如果哥哥不等于null.哥哥nodeType===1,
	while (prev !== null) {
		if (prev.nodeType === 1) {
	//获取到的哥哥标签存放到空间存储标签里面	
			result.unshift(prev);
		}
		//获取哥哥,后去哥哥的哥哥元素
		prev = prev.previousSibling;
	}
	return result;
}

2.获取所有的弟弟元素

function nextAll(node) {
	let result = [],
	//获取弟弟的所有节点
		next = node.nextSibling;
	while (next !== null) {
		//如果弟弟的节点类型===1;保存到盒子里面
		next.nodeType === 1 ? result.push(next) : null;
		//在去找当前找到的弟弟元素所有的节点
		next = next.nextSibling;
	}
	return result;
}

3.获取所有的弟弟元素和哥哥元素

function siblings(node) {
	return prevAll(node).concat(nextAll(node));
}

4.获取所有的元素的 索引

function index(node) {
	//上面所有的元素节点拼接正好对应所用,所有就是对应的长度就是对应的索引
	return prevAll(node).length;
}

2.JQ中还有还有一些方法:

  • prev获取上一个哥哥元素节点
  • next获取下一个弟弟元素节点
  • prevAll所有哥哥元素节点
  • nextAll所有弟弟元素节点
  • index获取它的索引
  • siblings获取它的兄弟元素节点
  • children获取所有的元素子节点 ....