jQuery的原生替代
jQuery的原生替代,参考自你不需要jQuery,对其进行了更清晰的总结与分类,现代游览器基本都支持(ie10+以上),只整理了最简洁实用的原生代码,过分累赘的实现没有加入
元素获取
| jQuery | 原生 |
|---|---|
| $(selector) | document.querySelectorAll(selector) |
| $(el).find(selector) | el.querySelectorAll(selector) |
| $(el).prev() | el.previousElementSibling |
| $(el).next() | el.nextElementSibling |
| $(el).first() | el.firstElementChild |
| $(el).last() | el.lastElementChild |
| $(el).parent() | el.parentNode |
| $(el).offsetParent() | el.offsetParent |
| $(el).children() | el.children |
| $(el).siblings() | Array.prototype.filter.call(el.parentNode.children, child => child !== el) |
dom操作
| jQuery | 原生 |
|---|---|
| $(el).before(htmlString) | el.insertAdjacentHTML('beforebegin', htmlString) => el.before(string) |
| $(el).after(htmlString) | el.insertAdjacentHTML('afterend', htmlString) => el.after(string) |
| $(parent).prepend(el) | parent.insertBefore(el, parent.firstChild) => el.prepend(htmlString) |
| $(parent).append(el) | parent.appendChild(el) => el.append(htmlString) |
| $(el).remove() | el.parentNode.removeChild(el) => el.remove() |
| $(el).clone() | el.cloneNode(true) |
| $(el).empty() | el.innerHTML = '' |
| $(el).replaceWith(string) | el.outerHTML = string |
| $(el).html(string) | el.innerHTML = string |
| $(el).text(string) | el.textContent = string |
| $(el).val(string) | el.value = string |
| $(el).html() | el.innerHTML |
| $(el).text() | el.textContent |
| $(el).val() | el.value |
样式操作
| jQuery | 原生 |
|---|---|
| $(el).hasClass(className) | el.classList.contains(className) |
| $(el).addClass(className) | el.classList.add(className) |
| $(el).removeClass(className) | el.classList.remove(className) |
| $(el).toggleClass(className) | el.classList.toggle(className) |
| $(el).css(ruleName) | getComputedStyle(el)[ruleName] |
| $(el).css('width', '20px') | el.style.width = '20px' |
属性操作
| jQuery | 原生 |
|---|---|
| $(el).attr('title') | el.getAttribute('title') |
| $(el).attr('title', string) | el.setAttribute('title', string) |
位置/尺寸
| jQuery | 原生 |
|---|---|
| $(el).position() | { left: el.offsetLeft, top: el.offsetTop } |
| $(el).offset() | el.getBoundingClientRect() |
| $(el).outerWidth() | el.offsetWidth |
| $(el).outerHeight() | el.offsetHeight |
| $(el).scrollTop() | el.scrollTop |
| $(el).scrollLeft() | el.scrollLeft |
特效
| jQuery | 原生 |
|---|---|
| $(el).hide() | el.style.display = 'none' |
| $(el).show() | el.style.display = '' |
dom载入完毕
| jQuery | 原生 |
|---|---|
| $(方法) | document.addEventListener('DOMContentLoaded', 方法) |
jQuery的原生替代的更多相关文章
- jQuery与原生js实现banner轮播图
jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...
- 通过游戏认识 --- JQuery与原生JS的差异
前言 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨是“write ...
- 原生JS的使用,包括jquery和原生JS获取节点、jquery和原生JS修改属性的比较
一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优 ...
- 通过案例来剖析JQuery与原生JS
首先来个例子: 我们在登陆或者注册一些网站时,如果某一项点过了但没填,鼠标移走后是不是经常看到网站有相应的红色字体提示呢? 那下面我们就以这个为例来剖析下jQuery和原生JS的一些区别,来上代码: ...
- 抛弃jQuery 深入原生的JavaScript
虽然我已经做网站建设工作10多年了,但我从最近3年才开始更多地学习如何更好的将纯JavaScript用于工作中,而不总是将jQuery考虑在第一位.现在我每天学习很多东西.这个过程让我觉得Adtile ...
- jQuery与原生JS相互转化
前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操 ...
- 用jQuery基于原生js封装的轮播
我发现轮播在很多网站里面都用到过,一个绚丽的轮播可以为网页增色不少,最近闲来无事,也用原生js封装了一个轮播,可能不像网上的插件那么炫,但是也有用心去做.主要用了闭包的思想.需要传递的参数有:图片地址 ...
- 【jQuery、原生】键盘键入两位小数
jquery的处理办法 <!doctype html> <html lang="en"> <head> <meta charset=&qu ...
- JQuery和原生JS跨域加载JSON数据或HTML。
前提:有时候需要在网页上,加载另一个网站上的数据.或者加载另一个网站上的一个页面.Js的Ajax请求不具备跨域功能,可以使用JQuery来实现. 网页端JS代码: $(function () { $. ...
随机推荐
- 讨厌的Permission denied:adb访问手机目录时,怎么处理Permission denied问题
故事背景 手机某app出现了无响应,我想找到手机anr日志 但我只知道在data目录的某个目录里有个tra**的文件里有anr日志 具体的我真忘了,所以想要进入data中用ls查看一下 结果就出现了讨 ...
- Dubbo源码解析(一)服务发现
一.Dubbo源码模块 官网地址 源码地址 1.1 源码模块组织 Dubbo工程是一个Maven多Module的项目,以包结构来组织各个模块. 核心模块及其关系,如图所示: 1.2 模块说明 dubb ...
- MySQL-Access denied for user 'username'@'localhost' (using password: YES) 解决
使用navicat新建MySQL用户保存时提示 Access denied for user 'username'@'localhost' (using password: YES): 解决方法: 请 ...
- springboot启动后自动退出
有时新建的springboot启动后自动退出运行,如图所示: 此种情况大都数是因为pom文件加入了tomcat的依赖,与springboot内嵌的tomcat冲突导致,所以只需将pom文件中的tomc ...
- Kubernetes 系列(四):使用Traefik访问.net core api
一. 准备 本篇的要求是在前三篇的基础上已经搭建好的本地k8s以及部署了Traefik,我们将会使用Traefik Ingress来访问.net core api,比较简单,做个记录,如果还没有搭建k ...
- 不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
作者 | 王国梁 Kubernetes 社区成员与项目维护者原文标题<Kubernetes 应用之道:让 Kubernetes落地的"三板斧">,首发于知乎专栏:进击 ...
- python 3.7 使用MP3play 模块
因工作需要,做了一个QQ机器人语音播报程序.主要思路 是通过 酷Q 获取QQ消息取出有效信息. 根据信息在百度AI上合成语音,然后本地播放. 在播放语音的时候用了好几个模块 pygame .pyme ...
- [ASP.NET Core 3框架揭秘] 依赖注入:控制反转
ASP.NET Core框架建立在一些核心的基础框架之上,这些基础框架包括依赖注入.文件系统.配置选项和诊断日志等.这些框架不仅仅是支撑ASP.NET Core框架的基础,我们在进行应用开发的时候同样 ...
- 基于.Net core3.0 开发的斗图小程序后端+斗图小程序
为啥要写这么一个小程序? 作为互联网的原住民. 90后程序员的我,从高中开始发QQ小表情. 到之后的熊猫头,蘑菇头. 可以说表情包陪伴我从学校到社会,从青少年到中年.. 而且因为斗图厉害,还找到一个女 ...
- vodevs3031 最富有的人
在你的面前有n堆金子,你只能取走其中的两堆,且总价值为这两堆金子的xor值,你想成为最富有的人,你就要有所选择. 输入描述 Input Description 第一行包含两个正整数n,表示有n堆金子. ...