使用jQuery能夠方便的選擇文檔中的元素,它的核心就是經過CSS選擇符查詢DOM文檔取得元素的引用,從而拋開getElementById()和getElementsByTagName().javascript
Selector API讓瀏覽器原生支持這些功能,解析和查詢文檔的操做能夠在瀏覽器內部完成,能夠極大的改善性能。css
Selector API Level 1的核心是兩個方法:querySelector()和querySelectorAll(),在兼容的瀏覽器中,能夠經過Document 和Element類型的實例調用它們。目前 已完 全 支持 Selectors API Level 1 的 瀏覽器 有 IE 8+、 Firefox 3. 5+、 Safari 3. 1+、 Chrome 和 Opera 10+。java
//取得body元素
var body = document.quertSelector('body');
//取得ID爲‘myDiv’的元素
var myDiv = document.querySelector('#myDiv');
//取得類爲'selected'的第一個元素
var selected = document.querySelector('.selected');
//取得類爲'button'的第一個圖像元素
var img = document.querySelector('img.button');
複製代碼
經過Document類型調用querySelector()方法時,會在文檔範圍沒查找,而經過Element類型調用時,只會在該元素的後代範圍內查找。若是傳入的參數不被支持,該方法會拋出錯誤。web
可以調用querySelector()方法的類型包括Document,DocumentFragment和Element.chrome
//取得全部類爲'selected'的全部元素
var selecteds = document.querySelectorAll('.selected');
複製代碼
若是要遍歷返回的NodeList中的每個元素,能夠使用item()方法或者方括號語法。 若是傳入的選擇符有錯誤或者不被支持,該方法一樣會拋出錯誤。數組
在取得某個元素的引用的狀況下,使用該方法可以方便的檢測它是否能被querySelector()和querySelectorAll()方法返回。瀏覽器
截止到如今,Firefox和chrome並未實現該方法,可是,Firefox提供了mozMatchesSelector()支持該方法,Safari 5+ 和Chrome經過webkitMatchesSelector()支持該方法。這裏有一個包裝函數能夠更好的使用該方法:函數
function matchesSelector(element,selector){
if(element.matchesSelector){
return element.matchesSelector(selector);
} else if(element.msMatchesSelector){
return element.msMatchesSelector(selector);
} else if(element.mozMatchesSelector){
return element.mozMatchesSelector(selector);
} else if(element.webkitMatchesSelector) {
return element.webkitMatchesSelector(selector);
} else{
return new Error('Not supported.');
}
}
複製代碼
本文爲JS高程讀後感性能