摘要:毫無疑問,是一款非常優秀的庫,它讓我們開發項目變得更加便捷容易。不過,當你準備在一個項目特別是移動項目中使用時,你真的該好好思考一下,你會用到的哪些功能,是否真的需要。
毫無疑問,JQuery是一款非常優秀的JavaScript庫,它讓我們開發項目變得更加便捷容易。
不過,當你準備在一個項目(特別是移動項目)中使用JQuery時,你真的該好好思考一下,你會用到JQuery的哪些功能,是否真的需要jQuery。因為隨著JavaScript的不斷改善進化,現在它內置的功能已經非常強大,在很大程度上,已經可以實現以前需要在JQuery中才能實現的技術(如果你的項目需要在IE8之前的瀏覽器中使用,建議還是使用JQuery,這樣可以省卻很多兼容性問題)。
下面將列出一些可以使用JavaScript來實現JQuery功能的代碼:
1、查找搜索選擇器
按ID查找:
$("#test") => document.getElementById("test");
按class類名查找:
$(".test") => document.getElementsByClassName("test")
按標簽名查找:
$("div") => document.getElementsByTagName("div")
當然,你也可以統一查找:
$("#test") document.querySelector("#test") $("#test div") => document.querySelectorAll("#test div") $("#test").find("span") => document.querySelectorAll("#test span");
獲取單個元素:
$("#test div").eq(0)[0] => document.querySelectorAll("#test div")[0]
獲取HTML、head、body:
$("html") => document.documentElement $("head") => document.head $("body") => document.body
判斷節點是否存在
$("#test").length > 0 => document.getElementById("test") !== null $("div").length > 0 => document.querySelectorAll("div").length > 0
遍歷節點:
$("div").each(function(i, elem) {}) function forEach(elems, callback) { if([].forEach) { [].forEach.call(elems, callback); } else { for(var i = 0; i < elems.length; i++) { callback(elems[i], i); } } } var div = document.querySelectorAll("div"); forEach(div, function(elem, i){ });
清空節點
$("#test").empty() => document.getElementById("test").innerHTML = "";
節點比較
$("div").is($("#test")) => document.querySelector("div") === document.getElementById("test")
2、獲取/設置內容(值)
獲取/設置元素內的內容
$("div").html() => document.querySelecotr("div").innerHTML $("div").text() => var t = document.querySelector("div"); t.textContent || t.innerText; $("div").html("abc"); => document.querySelecotr("div").innerHTML = "abc"; $("div;).text("abc") => document.querySelecotr("div").textContent = "abc"
獲取包含元素本身的內容
$("").append($("#test").clone()).html() => document.getElementById("test").outerHTML $("").append($("#test").clone()).html("abc") => document.getElementById("test").outerHTML = "abc"獲取表單值
$("input").val() => document.querySelector("input").value $("input").val("abc") => document.querySelector("input").value = "abc"3、class類名操作
類名新增
$("#test").addClass("a") function addClass(elem, className) { if(elem.classList) { elem.classList.add(className); } eles { elem.className += " " + className; } } addClass(document.getElementById("test"), "a");類名刪除
$("#test").removeClass("a"); function removeClass(elem, className) { if(elem.classList) { elem.classList.remove(className); } else { elem.className = elem.className.replace(new RegExp("(^|)" + className.split(" ").join("|") + "(|$)", "gi"), " "); } } removeClass(document.getElementById("test"), "a");類名包含:
$("#test").hasClass("a") function hasClass(elem, className) { if(elem.classList) { return elem.classList.contains(className); } else { return new RegExp("(^| )" + className + "( |$)", "gi").test(elem.className); } } hasClass(document.getElementById("test"), "a");4、節點操作
創建節點
$("") => document.createElement("div")復制節點:
$("div").clone() => document.querySelector("div").cloneNode(true)插入節點:
$("div").append("") var span = document.createElement("span"); document.querySelector("div").appendChild(span);在指定節點之前插入新的子節點
$("").insertBefore("#test"); var t = document.getElementById("test"); var span = document.createElement("span"); t.parentNode.insertBefore(span, t); /*更簡單的*/ t.insertAdjacentHTML("beforeBegin", "");
在指定節點后插入新的子節點:
$("").insertAfter("#test") function insertAfter(elem, newNode){ if(elem.nextElementSibling) { elem.parentNode.insertBefore(newNode, elem.nextElementSibling); } else { elem.parentNode.appendChild(newNode); } } var t = document.getElementById("test"); var span = document.createElement("span"); insertAfter(t, span); /*更簡單的*/ t.insertAdjacentHTML("afterEnd", "");
獲取父節點
$("#test").parent() => document.getElementById("test").parentNode刪除節點
$("#test").remove() var t = document.getElementById("test"); t.parentNode.removeChild(t);獲取Element子節點
$("#test").children() function children(elem) { if(elem.children) { return elem.children; } else { var children = []; for (var i = el.children.length; i--;) { if (el.children[i].nodeType != 8) children.unshift(el.children[i]); } return children; } } children(document.getElementById("test"));獲取下一個兄弟節點:
$("#test").next() function nextElementSibling(elem) { if(elem.nextElementSibling) { return elem.nextElementSibling; } else { do { elem = elem.nextSibling; } while ( elem && elem.nodeType !== 1 ); return elem; } } nextElementSibling(document.getElementById("test"));獲取上一個兄弟節點:
$("#test").prev() function previousElementSibling(elem) { if(elem.previousElementSibling) { return elem.previousElementSibling; } else { do { elem = elem.previousSibling; } while ( elem && elem.nodeType !== 1 ); return elem; } } previousElementSibling(document.getElementById("test"));5、屬性操作
獲取屬性
$("#test").attr("class") => document.getElementById("test").getAttribute("class")刪除屬性
$("#test").removeAttr("class") => document.getElementById("test").removeAttribute("class")設置屬性
$("#test").attr("class", "abc") => document.getElementById("test").setAttribute("class", "abc");6、CSS樣式操作
設置樣式
$("#test").css("height", "10px"); => document.getElementById("test").style.height = "10px";獲取樣式
$("#test").css("height") var getStyle = function(dom, attr) { return dom.currentStyle ? dom.currentStyle[attr] : getComputedStyle(dom, false)[attr]; }; getStyle(document.getElementById("test"), "height");獲取偽類的CSS樣式
window.getComputedStyle(el , ":after")[attrName];注:IE是不支持獲取偽類的
7、字符串操作
去除空格
$.trim(" abc ") function trim(str){ if(str.trim) { return str.trim(); } else { return str.replace(/^s+|s+$/g, ""); } } trim(" abc ");8、JSON操作
JSON序列化
$.stringify({name: "TG"}) => JSON.stringify({name: "TG"})JSON反序列化
$.parseJSON("{ "name": "TG" }") => JSON.parse("{ "name": "TG" }")原文鏈接:不要過度依賴JQuery(一)
如有錯誤,歡迎指正!如有更好建議,歡迎留言!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81274.html
相關文章
不要過度依賴JQuery(三)
摘要:在這里先拜個年,祝大家新年快樂,闔家幸福,步步高升回歸正題,在不要過度依賴一和不要過度依賴二兩篇文章中已經列舉了大量的使用原生替代的例子,在本文中將繼續列舉表單獲取焦點失去焦點實時監控判斷類型判斷類型判斷是否為一個函數判斷是否為數字判斷是 在這里先拜個年,祝大家新年快樂,闔家幸福,步步高升! 回歸正題,在不要過度依賴JQuery(一)和不要過度依賴JQuery(二)兩篇文章中已經列舉了...
不要過度依賴JQuery(三)
摘要:在這里先拜個年,祝大家新年快樂,闔家幸福,步步高升回歸正題,在不要過度依賴一和不要過度依賴二兩篇文章中已經列舉了大量的使用原生替代的例子,在本文中將繼續列舉表單獲取焦點失去焦點實時監控判斷類型判斷類型判斷是否為一個函數判斷是否為數字判斷是 在這里先拜個年,祝大家新年快樂,闔家幸福,步步高升! 回歸正題,在不要過度依賴JQuery(一)和不要過度依賴JQuery(二)兩篇文章中已經列舉了...
H5 知識點 - 收藏集 - 掘金
摘要:目錄不要過度依賴一前端掘金毫無疑問,是一款非常優秀的庫,它讓我們開發項目變得更加便捷容易。但是作為一個前端工作者,我們肯定也希望在我們的網頁里也能看到這么酷分鐘搞定常用基礎知識前端掘金基礎智商劃重點在實際開發中,已經非常普及了。 跨域解決方案總結 - 前端 - 掘金為什么需要跨域? 就得先知道同源策略. 同源策略 同源策略是為了保證數據的安全性,一個域的腳本不能去操作另外一個域的腳本的...
不要過度依賴JQuery(二)
摘要:為什么說不要過度依賴呢從項目方面來講,一些項目在開發中實際用到內置功能不多,這樣會造成項目臃腫另一方面,目前的主流已經傾向于原生開發。而在之前一篇不要過度依賴一一文中已經介紹了部分使用原生實現功能的代碼,這一章將繼續列舉。 為什么說不要過度依賴JQuery呢?從項目方面來講,一些項目在開發中實際用到JQuery內置功能不多,這樣會造成項目臃腫;另一方面,目前的主流已經傾向于原生開發。 ...
發表評論
0條評論
ckllj
男|高級講師
TA的文章
閱讀更多
LINUX:程序和進程
閱讀 2336·2021-11-23 09:51
短信驗證碼平臺有哪些比較好用?需從這3個方面來決定!
閱讀 1137·2021-11-22 13:52
[11.11]CMIVPS年度大促VPS主機5折,香港大帶寬/直連線路月付3.5美元起
閱讀 3611·2021-11-10 11:35
Tmwhost,澳門VPS(7.5折優惠),$5.62/月,1核/1G內存/50G Raid5 SS
閱讀 1187·2021-10-25 09:47
Resultful API的攔截(過濾器——Filter)
閱讀 2994·2021-09-07 09:58
前端每日實戰:145# 視頻演示如何用純 CSS 創作一個電源開關控件
閱讀 1059·2019-08-30 15:54
PHP基于Thinkphp5的砍價活動相關設計
閱讀 2817·2019-08-29 14:21
CSS形狀之border-radius
閱讀 3025·2019-08-29 12:20