成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

不要過度依賴JQuery(一)

ckllj / 2905人閱讀

摘要:毫無疑問,是一款非常優(yōu)秀的庫(kù),它讓我們開發(fā)項(xiàng)目變得更加便捷容易。不過,當(dāng)你準(zhǔn)備在一個(gè)項(xiàng)目特別是移動(dòng)項(xiàng)目中使用時(shí),你真的該好好思考一下,你會(huì)用到的哪些功能,是否真的需要。

毫無疑問,JQuery是一款非常優(yōu)秀的JavaScript庫(kù),它讓我們開發(fā)項(xiàng)目變得更加便捷容易。

不過,當(dāng)你準(zhǔn)備在一個(gè)項(xiàng)目(特別是移動(dòng)項(xiàng)目)中使用JQuery時(shí),你真的該好好思考一下,你會(huì)用到JQuery的哪些功能,是否真的需要jQuery。因?yàn)殡S著JavaScript的不斷改善進(jìn)化,現(xiàn)在它內(nèi)置的功能已經(jīng)非常強(qiáng)大,在很大程度上,已經(jīng)可以實(shí)現(xiàn)以前需要在JQuery中才能實(shí)現(xiàn)的技術(shù)(如果你的項(xiàng)目需要在IE8之前的瀏覽器中使用,建議還是使用JQuery,這樣可以省卻很多兼容性問題)。

下面將列出一些可以使用JavaScript來實(shí)現(xiàn)JQuery功能的代碼:

1、查找搜索選擇器

按ID查找:

$("#test")  =>  document.getElementById("test");

按class類名查找:

$(".test")  =>  document.getElementsByClassName("test")

按標(biāo)簽名查找:

$("div")  =>  document.getElementsByTagName("div")

當(dāng)然,你也可以統(tǒng)一查找:

$("#test")

document.querySelector("#test")
$("#test div")  =>  document.querySelectorAll("#test div")
$("#test").find("span")  => document.querySelectorAll("#test span");

獲取單個(gè)元素:

$("#test div").eq(0)[0]  =>  document.querySelectorAll("#test div")[0] 

獲取HTML、head、body:

$("html")  =>  document.documentElement
$("head")  =>  document.head
$("body")  =>  document.body

判斷節(jié)點(diǎn)是否存在

$("#test").length > 0  =>  document.getElementById("test") !== null

$("div").length > 0  => document.querySelectorAll("div").length > 0

遍歷節(jié)點(diǎn):

$("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){

});

清空節(jié)點(diǎn)

$("#test").empty()  =>  document.getElementById("test").innerHTML = "";

節(jié)點(diǎn)比較

$("div").is($("#test"))  =>  document.querySelector("div") === document.getElementById("test")

2、獲取/設(shè)置內(nèi)容(值)

獲取/設(shè)置元素內(nèi)的內(nèi)容

$("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"

獲取包含元素本身的內(nèi)容

$("
").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、節(jié)點(diǎn)操作

創(chuàng)建節(jié)點(diǎn)

$("
") => document.createElement("div")

復(fù)制節(jié)點(diǎn):

$("div").clone()  =>  document.querySelector("div").cloneNode(true)

插入節(jié)點(diǎn):

$("div").append("")

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

在指定節(jié)點(diǎn)之前插入新的子節(jié)點(diǎn)

$("").insertBefore("#test"); 

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

/*更簡(jiǎn)單的*/
t.insertAdjacentHTML("beforeBegin", "");

在指定節(jié)點(diǎn)后插入新的子節(jié)點(diǎn):

$("").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);

/*更簡(jiǎn)單的*/
t.insertAdjacentHTML("afterEnd", "");

獲取父節(jié)點(diǎn)

$("#test").parent()  =>  document.getElementById("test").parentNode

刪除節(jié)點(diǎn)

$("#test").remove()  

var t = document.getElementById("test");
t.parentNode.removeChild(t);

獲取Element子節(jié)點(diǎn)

$("#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"));

獲取下一個(gè)兄弟節(jié)點(diǎn):

$("#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"));

獲取上一個(gè)兄弟節(jié)點(diǎn):

$("#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")

設(shè)置屬性

$("#test").attr("class", "abc")  =>  document.getElementById("test").setAttribute("class", "abc");

6、CSS樣式操作

設(shè)置樣式

$("#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(一)

如有錯(cuò)誤,歡迎指正!如有更好建議,歡迎留言!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81274.html

相關(guān)文章

  • 不要過度依賴JQuery(三)

    摘要:在這里先拜個(gè)年,祝大家新年快樂,闔家幸福,步步高升回歸正題,在不要過度依賴一和不要過度依賴二兩篇文章中已經(jīng)列舉了大量的使用原生替代的例子,在本文中將繼續(xù)列舉表單獲取焦點(diǎn)失去焦點(diǎn)實(shí)時(shí)監(jiān)控判斷類型判斷類型判斷是否為一個(gè)函數(shù)判斷是否為數(shù)字判斷是 在這里先拜個(gè)年,祝大家新年快樂,闔家幸福,步步高升! 回歸正題,在不要過度依賴JQuery(一)和不要過度依賴JQuery(二)兩篇文章中已經(jīng)列舉了...

    pekonchan 評(píng)論0 收藏0
  • 不要過度依賴JQuery(三)

    摘要:在這里先拜個(gè)年,祝大家新年快樂,闔家幸福,步步高升回歸正題,在不要過度依賴一和不要過度依賴二兩篇文章中已經(jīng)列舉了大量的使用原生替代的例子,在本文中將繼續(xù)列舉表單獲取焦點(diǎn)失去焦點(diǎn)實(shí)時(shí)監(jiān)控判斷類型判斷類型判斷是否為一個(gè)函數(shù)判斷是否為數(shù)字判斷是 在這里先拜個(gè)年,祝大家新年快樂,闔家幸福,步步高升! 回歸正題,在不要過度依賴JQuery(一)和不要過度依賴JQuery(二)兩篇文章中已經(jīng)列舉了...

    vvpvvp 評(píng)論0 收藏0
  • H5 知識(shí)點(diǎn) - 收藏集 - 掘金

    摘要:目錄不要過度依賴一前端掘金毫無疑問,是一款非常優(yōu)秀的庫(kù),它讓我們開發(fā)項(xiàng)目變得更加便捷容易。但是作為一個(gè)前端工作者,我們肯定也希望在我們的網(wǎng)頁(yè)里也能看到這么酷分鐘搞定常用基礎(chǔ)知識(shí)前端掘金基礎(chǔ)智商劃重點(diǎn)在實(shí)際開發(fā)中,已經(jīng)非常普及了。 跨域解決方案總結(jié) - 前端 - 掘金為什么需要跨域? 就得先知道同源策略. 同源策略 同源策略是為了保證數(shù)據(jù)的安全性,一個(gè)域的腳本不能去操作另外一個(gè)域的腳本的...

    frontoldman 評(píng)論0 收藏0
  • 不要過度依賴JQuery(二)

    摘要:為什么說不要過度依賴呢從項(xiàng)目方面來講,一些項(xiàng)目在開發(fā)中實(shí)際用到內(nèi)置功能不多,這樣會(huì)造成項(xiàng)目臃腫另一方面,目前的主流已經(jīng)傾向于原生開發(fā)。而在之前一篇不要過度依賴一一文中已經(jīng)介紹了部分使用原生實(shí)現(xiàn)功能的代碼,這一章將繼續(xù)列舉。 為什么說不要過度依賴JQuery呢?從項(xiàng)目方面來講,一些項(xiàng)目在開發(fā)中實(shí)際用到JQuery內(nèi)置功能不多,這樣會(huì)造成項(xiàng)目臃腫;另一方面,目前的主流已經(jīng)傾向于原生開發(fā)。 ...

    Labradors 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<