原生js实现preAll和nextAll方法
一直以来都在好奇,jquery的prevAll和nextAll方法都是咋实现的,那么厉害,而且还那么方便。不得不说,jquery真的帮我们省去了开发中手写大量js代码带来的开发进度问题,而且很好的解决了js代码的浏览器兼容性问题,对于js领域来说,真的算是一场革命性的变革。但是如果知道了原理,读懂了jquery的源码,还是会恍然大悟的。下边就贴出自己写的原生js实现preAll和nextAll的方法:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>原生js实现preAll和nextAll方法</title>
<script>HTMLElement.prototype.prevAll = function(){var _parent = this.parentElement;var _child = _parent.children;var arr = [];for(var i = 0;i < _child.length;i++){var _childI = _child[i];if(_childI == this){break;}arr.push(_childI);}return arr;};HTMLElement.prototype.nextAll = function(){var _parent = this.parentElement;var _child = _parent.children;var arr = [];for(var i = _child.length - 1;i >= 0;i--){var _childI = _child[i];if(_childI == this){break;}arr.unshift(_childI);}return arr;};function foo(dom){console.log("prevAll:", dom.prevAll());console.log("nextAll:", dom.nextAll());}
</script>
</head>
<body>
<ul><li>我是之前元素1</li><li>我是之前元素2</li><li>我是之前元素3</li><li onclick="foo(this)" style="cursor:pointer;">点我就可以看到效果了</li><li>我是之后元素1</li><li>我是之后元素2</li><li>我是之后元素3</li><li>我是之后元素4</li>
</ul>
</body>
</html>
是不是知道了原生js的写法,你就会觉得其实自己也可以那么高大上了!
转载于:https://www.cnblogs.com/tnnyang/p/7884487.html
原生js实现preAll和nextAll方法相关推荐
- 原生js实现addClass,removeClass,hasClass方法
第一部分:原生js实现addClass,removeClass,hasClass方法 function hasClass(elem, cls) {cls = cls || '';if (cls.rep ...
- 漫谈原生JS添加元素的两种方法
漫谈原生JS添加元素 常规方法 常规方法是首先创建一个目标元素并赋值给某个变量 ,但是元素里面内容较多,需要innerHTML赋值,将含有内容的变量赋值给目标元素的变量,最后,将这个目标元素的变量通过 ...
- 原生JS查找相邻元素——siblings方法
在JQuery中可以很方便地用 elem.siblings() 方法实现查找相邻元素,但在JS中并没有这样的方法,可以用previousSibling和nextSibling结合来实现. 不过在JS中 ...
- 原生JS替代jQuery的各种方法汇总
前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操 ...
- 【数组方法大合集】原生js数组array常用工具方法大合集
var array = {/* 数组求和*/sum: arr => eval(arr.join("+")),/* 判断一个数组(支持一个字符串)里面的是否有任何一个元素被包含 ...
- css原生样式支持,原生JS读写CSS样式的方法
通过Element对象的getAttribute().setAttribute().removeAttribute()直接读写style属性 如:elm.setAttribute('style','c ...
- 用原生JS读写CSS样式的方法总结
一.可以通过DOM节点对象的style对象(即CSSStyleDeclaration对象)来读写文档元素的CSS样式 如:var elm = document.getElementById('test ...
- 原生JS实现轮播图 方法总结
方法总结: 方法一: 利用绝对定位absolute偏移量的改变来实现 具有往左往右滑动的效果 演示代码: 位移滑动轮播图1 方法二: 利用 display/opacity/visibility状态切换 ...
- 原生js实现on与off 方法
使用过jQuery的同学,应该对事件绑定方法 .on() .off() 有一定的了解. 在个人类库jTool 中实现了这两个方法,这里就来细说下原生实现方式. 实现方式 以下为个人类库jTool 中 ...
最新文章
- “进度条”博客——第三周
- android studio资产目录,在Android Studio中设置单元测试的自定义资产目录
- jupyter notebook python插件_VS Code Python 将支持 Jupyter Notebook
- 在iframe框架中全屏不好使的原因
- U3D 编辑器中sceneview下相机操作相关
- BZOJ4426 : [Nwerc2015]Better Productivity最大生产率
- ubuntu每次登陆都用root账号登陆
- iptables必知必会用法
- 【数据分析学习】Pandas学习记录
- 2021泌阳高考成绩查询,驻马店教育局网站2021年泌阳中招成绩查询系统
- 工业机器人什么情况下会出现奇点_功夫机器人周全:复合作业机器人规模应用的奇点有多远?...
- 利用sql语句实现到datagridview显示的转换
- java web 限下载速_JavaWeb实现文件上传与下载的方法
- vs2015发布网站到IIS
- python做var模型_在Python中使用pandas statsmodels的VAR模型
- 未来战警 中的计算机词汇,计算机常用单词词汇
- 【吐槽】B站大量番剧下架,程序猿们这时都在干什么?
- chmod 777的含义
- JS逆向|使用pyexecjs库替换加密字符串
- python程序编程千分符号怎么输入_Excel表格中怎么输入千分之一符号
热门文章
- 连你的免疫系统都拒绝996:半夜吃东西更容易拉肚子 | Cell
- @老板:别开视频会议了,效率低没人care,斯坦福、微软都可以作证
- 因为名字叫True,她被苹果iCloud服务器拒绝了
- 文科生如何入门机器学习:先看看这篇零基础教程,再多算几遍吧
- 苹果接盘倒下的无人车公司:吴恩达旗下,曾估值2亿美元,CEO及大部分员工被裁...
- 元素水平垂直居中的方法
- clouderamanager-server启动,log日志中说需要mysql驱动的解决办法
- ansible register when: result | succeeded when: item.rc != 0
- javascript设计模式--单例模式
- php while循环控制实例讲解