尽可能的使用原生js而不是jQuery

快乐打工仔 分类:实例代码

尽可能的使用原生js而不是jQuery属于前端实例代码,有关更多实例代码大家可以查看

不可否认,jQuery是一款非常优秀的JavaScript库,极大的提高了前端开发效率。

有利就有弊,过度的依赖jQuery可能会带来代码执行效率低等问题;随着原生JavaScript版本的升级,现在很多内置的功能也能够完美的实现jQuery的对应功能,下面就简单做一下罗列,需要的朋友可以做一下参考。

一.元素查找:

(1).通过id查找元素:

$("#ant")

jQuery的id选择器完全可以使用原生方法替代:

document.getElementById("ant")

(2).通过class属性来查找元素:

$(".ant")

document.querySelector()和document.querySelectorAll()方法:

这两个方法可以实现强大的选择器功能,下面是几个简单代码:

//获取id属性值为ant的元素对象
document.querySelector("#ant");
//获取id属性值为ant下面的所有div元素集合
document.querySelectorAll("#ant div");

二.判断节点是否存在:

$("#ant").length > 0

上面的代码可以使用下面的代码替代:

document.getElementById("ant") !== null

三.节点遍历:

("div").each(function (index, elem) {
  //code
})

上面的代码可以采用下面的代码替代:

function forEach(elems, callback) {
  if([].forEach) {
    [].forEach.call(elems, callback);
  } else {
    for (var index = 0; index < elems.length; index++) {
      callback(elems[index], index);
    }
  }
}
var div = document.querySelectorAll("div");
forEach(div, function(elem, index){
  //code
});

四.清空节点内容:

$("#ant").empty()

上面的代码可以用如下代码替代:

document.getElementById('test').innerHTML =""

五.设置节点的内容:

$("div").html("前端教程网")

上面的代码可以使用如下代码替代:

document.querySelecotr('div').innerHTML = "前端教程网";

再来看设置text文本内容:

$("div").text("前端教程网")

可以使用如下代码替代:

var odiv = document.querySelector("div");
odiv.textContent="前端教程网";

六.操作class属性:

(1).新增class样式类:

$("#ant").addClass("class")

上面的代码可以用以下代码替代:

function addClass(elem, className) {
  if(elem.classList) {
    elem.classList.add(className);
  } else {
    elem.className += ' ' + className;
  }
}
addClass(document.getElementById("ant"), "class");

(2).删除指定样式类:

$("#ant").removeClass("class");

上面的代码可以使用如下代码替代:

function removeClass(elem, className) {
  if(elem.classList) {
    elem.classList.remove(className);
  } else {
    elem.className=elem.className.replace(new RegExp('(^|\b)'+className.split(' ').join('|')+'(\b|$)','gi'),' ');
  }
}
removeClass(document.getElementById("ant"), "class");

(3).判断是否包含指定的类:

$("#ant").hasClass("class");

上面的代码可以用以下代码替代:

function hasClass(elem, className) {
  if(elem.classList) {
    return elem.classList.contains(className);
  } else {
    return new RegExp('(^| )' + className + '( |$)', 'gi').test(elem.className);
  }
}
hasClass(document.getElementById("ant"), "class");

七.节点操作:

(1).创建节点:

$("<div>")

上面的代码可以用以下代码替代:

document.createElement("div")

(2).复制节点:

$("div").clone()

上面的代码可以用以下代码替代:

document.querySelector("div").cloneNode(true)

(3).插入节点:

$("div").append("<span></span>")

当然插入节点的方法有很多,以上代码可以用如下代码替代:

var span = document.createElement("span");
document.querySelector("div").appendChild(span);

在指定节点之前插入新的子节点:

$("<span>").insertBefore("#ant");

上面的代码可以用如下代码替代:

var t = document.getElementById("ant");
var span = document.createElement("span");
t.parentNode.insertBefore(span, t);

在指定节点后插入新的子节点:

$("<span>").insertAfter("#ant")

以上代码可以用下面的代码替代:

function insertAfter(elem, newNode){
  if(elem.nextElementSibling) {
    elem.parentNode.insertBefore(newNode, elem.nextElementSibling);
  } else {
    elem.parentNode.appendChild(newNode);
  }
}
var t = document.getElementById("ant");
var span = document.createElement("span");   
insertAfter(t, span);

(4).获取父节点:

$("#ant").parent()

上面的代码可以用以下代码替代:

document.getElementById("ant").parentNode

尽可能的使用原生js而不是jQuery,这样的场景在实际项目中还是用的比较多的,关于尽可能的使用原生js而不是jQuery就介绍到这了。

回复

我来回复
  • 暂无回复内容