麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

jQuery函數的等價原生函數代碼示例

2019-11-20 22:41:11
字體:
來源:轉載
供稿:網友
我們針對常用的jQuery方法以及其等價原生方法的性能做了一些測試(1, 2, 3)。
我知道你在想什么。原生方法明顯要比jQuery方法快,因為jQuery方法要處理瀏覽器兼容以及其他一些事情。是的,我完全贊成。寫這篇文章并不是出于反對使用jQuery,但如果你針對的是現代瀏覽器,那么使用原生方法會使性能有很大的提升。

許多開發者沒有意識到大多數他們使用的jQuery方法可以使用原生方法,或者更輕量級的方法來代替。下面是一些代碼示例,展示一些常用的jQuery方法,以及其等價原生方法。

譯者注:需要注意下面有些原生方法是HTML5引用的,部分瀏覽器可能不能使用。

選擇器
jQuery的核心之一就是能非常方便的取到DOM元素。我們只需輸入CSS選擇字符串,便可以得到匹配的元素。但在大多數情況下,我們可以用簡單的原生代碼達到同樣的效果。
復制代碼 代碼如下:

//----得到頁面的所有div---------
/* jQuery */
$("div")
/* 原生 */
document.getElementsByTagName("div")
//----得到所有指定class的元素---------
/* jQuery */
$(".my-class")
/* 原生 */
document.querySelectorAll(".my-class")
/* 更快的原生方法 */
document.getElementsByClassName("my-class")
//----通過CSS選擇得到元素----------
/* jQuery */
$(".my-class li:first-child")
/* 原生 */
document.querySelectorAll(".my-class li:first-child")
//----得到指定clsss的第一個元素----
/* jQuery */
$(".my-class").get(0)
/* 原生 */
document.querySelector(".my-class")

譯者注:其實這里面是有些問題的,document.querySelectorAll和jQuery選擇器還是有區別的,前者返回的是一個NodeList,而后者返回的是一個類數組對象。
DOM操作
jQuery還在DOM操作上頻繁使用,例如插入或者刪除元素。我們也可以使用原生方法來進行這些操作,你會發現這需要寫額外的代碼,當然也可以寫自己的輔助函數來讓使用起來更容易。下面是一些將元素插入到頁面中的例子。
復制代碼 代碼如下:

//----插入元素----
/* jQuery */
$(document.body).append("<div id='myDiv'><img src='im.gif'/></div>");
/* 蹩腳的原生方法 */
document.body.innerHTML += "<div id='myDiv'><img src='im.gif'/></div>";
/* 更好的原生方法 */
var frag = document.createDocumentFragment();
var myDiv = document.createElement("div");
myDiv.id = "myDiv";
var im = document.createElement("img");
im.src = "im.gif";
myDiv.appendChild(im);
frag.appendChild(myDiv);
document.body.appendChild(frag);
//----前置元素----
// 除了最后一行
document.body.insertBefore(frag, document.body.firstChild);

CSS classes
在jQuery中,我們可以很容易對DOM元素添加、刪除、檢查它的CSS class。幸運的是,利用原生方法也可以簡單的辦到。
復制代碼 代碼如下:

// 得到DOM元素的引用
var el = document.querySelector(".main-content");
//----添加class------
/* jQuery */
$(el).addClass("someClass");
/* 原生方法 */
el.classList.add("someClass");
//----刪除class-----
/* jQuery */
$(el).removeClass("someClass");
/* 原生方法 */
el.classList.remove("someClass");
//----是否是該class---
/* jQuery */
if($(el).hasClass("someClass"))
/* 原生方法 */
if(el.classList.contains("someClass"))

修改CSS屬性
總是通過Javascript修改和檢索CSS屬性,這樣會比使用jQuery CSS函數更加簡單快速,并且沒有任何不必要的代碼。
復制代碼 代碼如下:

// 得到DOM元素引用
var el = document.querySelector(".main-content");
//----設置CSS屬性----
/* jQuery */
$(el).css({
background: "#FF0000",
"box-shadow": "1px 1px 5px 5px red",
width: "100px",
height: "100px",
display: "block"
});
/* 原生 */
el.style.background = "#FF0000";
el.style.width = "100px";
el.style.height = "100px";
el.style.display = "block";
el.style.boxShadow = "1px 1px 5px 5px red";
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美精品免费一区二区三区 | 久久久国产一区二区三区 | 蜜桃视频在线免费播放 | 国产精品成人免费一区久久羞羞 | 国产亚洲小视频 | 青热久思思 | 国产亚洲精品久久久久久久久久 | 亚洲第一色婷婷 | 黄色电影免费网址 | 精品国产一区二区三区在线观看 | 日韩视频不卡 | 毛片在线免费观看视频 | 国产伦精品一区二区三区在线 | 亚洲国产精品久久久久久久久久久 | 国产一区毛片 | 国产无遮挡一区二区三区毛片日本 | 中文字幕精品在线视频 | 校花被肉干高h潮不断 | 久久精品资源 | 激情亚洲一区二区三区 | 色屁屁xxxxⅹ免费视频 | 日韩黄站| 久草在线手机视频 | 国产青草视频在线观看 | av在线一区二区三区四区 | 美女黄污视频 | 国产羞羞视频 | 久久最新网址 | 黄色羞羞视频在线观看 | 亚洲国产视频网 | 久久久久久久久久久久久国产精品 | 亚洲成人福利在线观看 | 久在线播放 | 欧美成人二区 | 色淫影院 | av电影免费播放 | 草草视频免费观看 | 精品久久久久久久久久中文字幕 | 日本网站一区二区三区 | 国产在线免 | 亚洲一级电影在线观看 |