DOM: 如何獲取元素下的第一個子元素


Element.firstChild ?,是的,這是第一種方法,當然,通常來說支持 W3C 規范的瀏覽器,如 Firefox 等取到的應該是 TEXT_NODE。很早之前,或者說現在最流行的方法可能是:

// 讓我們假設要將它抽象出來,變成一個 util 對象的方法
var util = {};

util.first = function(element) {
  if(!element) return;

var first= element.firstChild;
  // 處理 w3c 瀏覽器中第一個子元素是 TEXT_NODE
  // 並且需要考慮到有沒有 COMMENT_NODE 的情況
  while(first && first.nodeType !==1) first = first.nextSibling;
  return first;
}

現在瀏覽器支持一個叫Element.firstElementChild 的屬性,可以獲取到第一個為元素的子節點。那么,我們的 API 可以變得更簡單:

util.first = function(element) {
  if(!element) return;

// 剛好 IE8 以下支持直接拿 firstChild
  return element[element.firstElementChild ? 'firstElementChild' : 'firstChild'];
}

另外的兩個實現方法:

// 通過 HTML5 的 querySelector,及 getElementsByTagName
util.first = function(element, tag) {
  if(!element) return;
  tag = tag || '*';;
  return element.querySelector ? element.querySelector(tag) : element.getElementsByTagName(tag)[0];
}

// IE6 也支持的 children
util.first = function(element) {
  return element && element.children[0];
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM