资讯专栏INFORMATION COLUMN

放弃jQuery, 使用原生js

mumumu / 2681人阅读

摘要:随着的逐渐淘汰,的兴起,以及侧重点放在了移动端,可能变的不在那么重要,原生一样很好用。下面介绍几个原生替换的方法。

随着IE6、7、8的逐渐淘汰,HTML5的兴起,以及侧重点放在了移动端,jQuery可能变的不在那么重要,原生一样很好用。下面介绍几个原生替换jq的方法。

获取元素

</>复制代码

  1. //jQuery
  2. $(".xxx"); //class获取
  3. $("#xxx"); //id获取
  4. $(".xxx.ccc"); //同时包含xxx和ccc
  5. $(".xxx,.zzz"); //多选
  6. $(".xxx div"); //子类
  7. $(".xxx p:first"); //第一个P元素
  8. //原生js
  9. //querySelector基本上实现了jq选择器同样的功能,具体可以自己测试,另外querySelector返回的是第一个元素,querySelectorAll则返回所有选择的元素。
  10. document.querySelector(".xxx"); //class获取
  11. document.querySelector("#xxx");//id获取
  12. document.querySelector(".xxx.ccc");//同时包含xxx和ccc
  13. document.querySelector(".xxx,.ccc");//多选
  14. document.querySelector(".xxx div");//子类
  15. document.querySelector(".xxx p:first-child");//第一个P元素
添加class

</>复制代码

  1. //JQuery
  2. $(".xxx").addClass("class_name");
  3. //原生js
  4. el.classList.add("class_name");
删除class

</>复制代码

  1. //JQuery
  2. $(".xxx").removeClass("class_name");
  3. //原生js
  4. el.classList.remove("class_name");
切换class

</>复制代码

  1. //JQuery
  2. $(".xxx").toggleClass("class_name");
  3. //原生js
  4. el.classList.toggle("class_name");
是否包含某个class

</>复制代码

  1. //JQuery
  2. $(".xxx").hasClass("class_name");
  3. //原生js
  4. el.classList.contains("class_name");

上面是HTML5提供的新的方法,如果你非要为了兼容所谓的IE,可以用下面的这些

</>复制代码

  1. //是否包含class
  2. function hasClass(o, n){
  3. return new RegExp(""+n+"").test(o.className);
  4. };
  5. //添加class
  6. function addClass(o, n){
  7. if(!hasClass(o, n)) o.className+=" "+n;
  8. };
  9. //删除class
  10. function delClass(o, n){
  11. if(hasClass(o, n)){
  12. o.className = o.className.replace(new RegExp("(?:^|s)"+n+"(?=s|$)"), "").replace(/^s*|s*$/g, "");
  13. };
  14. };
插入HTML

</>复制代码

  1. //JQuery
  2. $(el).before(htmlString);
  3. $(parent).append(el);
  4. $(el).after(htmlString);
  5. //原生js
  6. parent.appendChild(el);
  7. el.insertBefore(NewDom,ele);
  8. ele.insertAdjacentHTML("beforeend", "
  9. 内容
  10. ");
  11. //

具体insertAdjacentHTML的介绍,请移步到 这篇文章(点击这里)

获取子节点/父节点

</>复制代码

  1. //JQuery
  2. $(".xxx").children();
  3. $(".xxx").parent();
  4. //原生js
  5. ele.children;
  6. ele.parentNode
上一个节点

</>复制代码

  1. //JQuery
  2. $(".xxx").prev();
  3. //原生js
  4. var prev = ele.previousElementSibling || ele.previousSibling
下一个节点

</>复制代码

  1. //JQuery
  2. $(".xxx").next();
  3. //原生js
  4. var next = ele.nextElementSibling || ele.nextSibling
上下节点

</>复制代码

  1. //JQuery
  2. $(ele).siblings();
  3. //原生js
  4. var siblings = Array.prototype.slice.call(el.parentNode.children);
  5. for (var i = siblings.length; i--;) {
  6. if (siblings[i] === el) {
  7. siblings.splice(i, 1);
  8. break;
  9. };
  10. };
  11. [].forEach.call(el.parentNode.children, function(child){
  12. if(child !== el);
  13. });
创建节点

</>复制代码

  1. //JQuery
  2. var ele = $("
    ");
  3. //原生js
  4. var ele = document.createElement("div");
删除节点

</>复制代码

  1. //JQuery
  2. $(ele).remove();
  3. //原生js
  4. parent.removeChild(ele);
获取、设置、删除属性

</>复制代码

  1. //JQuery
  2. $(ele).attr(name,value) //设置
  3. $(ele).attr(name) //获取
  4. $(ele).removeAttr(name) //删除
  5. //原生js
  6. ele.setAttribute(name,value);//设置
  7. ele.getAttribute(name);//获取
  8. ele.removeAttribute(name);//删除
Data属性

</>复制代码

  1. //JQuery
  2. $("body").data("foo", 52); //设置
  3. $("body").data("foo"); //获取
  4. $("body").removeData("foo"); //删除
  5. //原生js
  6. ele.dataset.foo = 52 //设置
  7. ele.dataset.foo //获取
获取内容/清空内容

</>复制代码

  1. //JQuery
  2. var html = $(ele).html();
  3. $(el).empty();
  4. //原生js
  5. var html = ele.innerHTML;
  6. el.innerHTML = "";
获取文本

</>复制代码

  1. //JQuery
  2. $(ele).text();
  3. //原生js
  4. var txt = ele.textContent || ele.innerText
设置css

</>复制代码

  1. //JQuery
  2. $(ele).css("height","300px");
  3. $(ele).css({
  4. height:300
  5. });
  6. //原生js
  7. ele.style.height = "300px";
  8. ele.style.cssText = "height:200px;color:red;left:100px;"
显示隐藏

</>复制代码

  1. //JQuery
  2. $(el).show();
  3. $(el).hide();
  4. //原生js
  5. el.style.display = "";
  6. el.style.display = "none";
元素的内高度[height + padding]/元素的外高度[height + padding + border]

</>复制代码

  1. //JQuery
  2. $(ele).innerHeight();
  3. $(ele).outerHeight();
  4. //原生js
  5. ele.clientHeight;
  6. ele.offsetHeight;
元素的位置

</>复制代码

  1. //JQuery
  2. $(ele).offset().left;
  3. $(ele).offset().top;
  4. //原生js
  5. ele.offsetLeft;
  6. ele.offsetTop;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100641.html

相关文章

  • 你不需要 jQuery,但你需要一个 DOM 库

    摘要:对于复杂的业务需求仍然需要一些操作。使用方式很简单,但是你需要创建一个独立文件,重新挂载需要的方法到命名空间上,这在编写插件时非常有用。正如前文所说,的操作在我看来依然是最好用的,所以,你不需要,但你需要一个库。 showImg(https://segmentfault.com/img/bVbuPEH?w=750&h=375); 写这篇文章的目的,一方面是介绍一下自己编写的模块化 DO...

    HitenDev 评论0 收藏0
  • 2019 年了,为什么我还在用 jQuery

    摘要:无论是还是,对许多应用来说,这个大小都是完全可以接受的。但是为了不用,放弃向后兼容那我觉得还是用得了。自从年双十一正式上线,累计处理了亿错误事件,付费客户有金山软件百姓网等众多品牌企业。 译者按: 看来 jQuery 还是有一些用武之地的。 原文: Why Im Still Using jQuery in 2019 译者: Fundebug 为了保证可读性,本文采用意译而非直译...

    aikin 评论0 收藏0
  • 小谈网站建设的兼容性

    摘要:本文的兼容性包含了更多的意思,一些和网站开发注意的实际问题。已经快出生十年了,它就是为了解决浏览器的兼容性而生的,对于桌面端开发我们还是建议采用这个版本。 本文的兼容性包含了更多的意思,一些和网站开发注意的实际问题。对注重seo的网站帮助更多一些。 关于浏览器 现在的前端开发已经开始放弃兼容ie6,ie7,并且也在有条件的放弃ie8。像chrome这样的现代浏览器对新特性支持度都很棒,...

    soasme 评论0 收藏0
  • jQuery 3.0 beta 发布

    摘要:回调函数将固定为异步执行。这些将被移除这些应该会保留需要注意的是,那些继续存在的回调函数不会有任何变化,只有的方法会受影响。 创作不够,译文来凑。 跟上篇一样是编译,不准备逐字翻。比如,我会把we译成jQuery官方团队,或者他们。 初译版,待校正。这篇文章比较长,翻译难度也不小,如果有问题,欢迎提出,我尽量修改。 正文开始。 歪果仁也要双喜临门,于是 jQuery 官方团队选在 j...

    LeanCloud 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<