您的位置:首页 > 其它

DOM: 如何获取元素下的第一个子元素

2014-05-26 14:06 267 查看
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];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: