成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

不要過度依賴JQuery(一)

ckllj / 2945人閱讀

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

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

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

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

1、查找搜索選擇器

按ID查找:

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

按class類名查找:

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

按標簽名查找:

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

獲取單個元素:

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

獲取HTML、head、body:

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

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

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

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

遍歷節(jié)點:

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

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

節(jié)點比較

$("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é)點操作

創(chuàng)建節(jié)點

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

復(fù)制節(jié)點:

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

插入節(jié)點:

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

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

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

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

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

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

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

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

獲取父節(jié)點

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

刪除節(jié)點

$("#test").remove()  

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

獲取Element子節(jié)點

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

獲取下一個兄弟節(jié)點:

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

獲取上一個兄弟節(jié)點:

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/81274.html

相關(guān)文章

  • 不要過度依賴JQuery(三)

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

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

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

    vvpvvp 評論0 收藏0
  • H5 知識點 - 收藏集 - 掘金

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

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

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

    Labradors 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<