10 09/2014

get first child

最后更新: Wed Sep 10 2014 12:37:50 GMT+0800

有趣的代码,来自 sofish

// 让我们假设要将它抽象出来,变成一个 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;
}

或者

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

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

或者

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];
}