一直以来都在好奇,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方法相关推荐

  1. 原生js实现addClass,removeClass,hasClass方法

    第一部分:原生js实现addClass,removeClass,hasClass方法 function hasClass(elem, cls) {cls = cls || '';if (cls.rep ...

  2. 漫谈原生JS添加元素的两种方法

    漫谈原生JS添加元素 常规方法 常规方法是首先创建一个目标元素并赋值给某个变量 ,但是元素里面内容较多,需要innerHTML赋值,将含有内容的变量赋值给目标元素的变量,最后,将这个目标元素的变量通过 ...

  3. 原生JS查找相邻元素——siblings方法

    在JQuery中可以很方便地用 elem.siblings() 方法实现查找相邻元素,但在JS中并没有这样的方法,可以用previousSibling和nextSibling结合来实现. 不过在JS中 ...

  4. 原生JS替代jQuery的各种方法汇总

    前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操 ...

  5. 【数组方法大合集】原生js数组array常用工具方法大合集

    var array = {/* 数组求和*/sum: arr => eval(arr.join("+")),/* 判断一个数组(支持一个字符串)里面的是否有任何一个元素被包含 ...

  6. css原生样式支持,原生JS读写CSS样式的方法

    通过Element对象的getAttribute().setAttribute().removeAttribute()直接读写style属性 如:elm.setAttribute('style','c ...

  7. 用原生JS读写CSS样式的方法总结

    一.可以通过DOM节点对象的style对象(即CSSStyleDeclaration对象)来读写文档元素的CSS样式 如:var elm = document.getElementById('test ...

  8. 原生JS实现轮播图 方法总结

    方法总结: 方法一: 利用绝对定位absolute偏移量的改变来实现 具有往左往右滑动的效果 演示代码: 位移滑动轮播图1 方法二: 利用 display/opacity/visibility状态切换 ...

  9. 原生js实现on与off 方法

    使用过jQuery的同学,应该对事件绑定方法 .on() .off() 有一定的了解. 在个人类库jTool 中实现了这两个方法,这里就来细说下原生实现方式. 实现方式 以下为个人类库jTool 中 ...

最新文章

  1. “进度条”博客——第三周
  2. android studio资产目录,在Android Studio中设置单元测试的自定义资产目录
  3. jupyter notebook python插件_VS Code Python 将支持 Jupyter Notebook
  4. 在iframe框架中全屏不好使的原因
  5. U3D 编辑器中sceneview下相机操作相关
  6. BZOJ4426 : [Nwerc2015]Better Productivity最大生产率
  7. ubuntu每次登陆都用root账号登陆
  8. iptables必知必会用法
  9. 【数据分析学习】Pandas学习记录
  10. 2021泌阳高考成绩查询,驻马店教育局网站2021年泌阳中招成绩查询系统
  11. 工业机器人什么情况下会出现奇点_功夫机器人周全:复合作业机器人规模应用的奇点有多远?...
  12. 利用sql语句实现到datagridview显示的转换
  13. java web 限下载速_JavaWeb实现文件上传与下载的方法
  14. vs2015发布网站到IIS
  15. python做var模型_在Python中使用pandas statsmodels的VAR模型
  16. 未来战警 中的计算机词汇,计算机常用单词词汇
  17. 【吐槽】B站大量番剧下架,程序猿们这时都在干什么?
  18. chmod 777的含义
  19. JS逆向|使用pyexecjs库替换加密字符串
  20. python程序编程千分符号怎么输入_Excel表格中怎么输入千分之一符号

热门文章

  1. 连你的免疫系统都拒绝996:半夜吃东西更容易拉肚子 | Cell
  2. @老板:别开视频会议了,效率低没人care,斯坦福、微软都可以作证
  3. 因为名字叫True,她被苹果iCloud服务器拒绝了
  4. 文科生如何入门机器学习:先看看这篇零基础教程,再多算几遍吧
  5. 苹果接盘倒下的无人车公司:吴恩达旗下,曾估值2亿美元,CEO及大部分员工被裁...
  6. 元素水平垂直居中的方法
  7. clouderamanager-server启动,log日志中说需要mysql驱动的解决办法
  8. ansible register when: result | succeeded when: item.rc != 0
  9. javascript设计模式--单例模式
  10. php while循环控制实例讲解