对于这个小巧的函数系列的第八篇文章,我将介绍一个名为ancestor()
的函数。 顾名思义,此功能根据标签名称和/或类匹配获得对给定节点祖先的引用。
这是ancestor()
函数的代码:
function ancestor(node, match)
{
if(!node)
{
return null;
}
else if(!node.nodeType || typeof(match) != 'string')
{
return node;
}
if((match = match.split('.')).length === 1)
{
match.push(null);
}
else if(!match[0])
{
match[0] = null;
}
do
{
if
(
(
!match[0]
||
match[0].toLowerCase() == node.nodeName.toLowerCase())
&&
(
!match[1]
||
new RegExp('( |^)(' + match[1] + ')( |$)').test(node.className)
)
)
{
break;
}
}
while(node = node.parentNode);
return node;
}
第一个参数是对原始节点的引用-可以是任何种类的DOM节点,但通常是一个元素。 第二个参数是一个字符串,用于标识祖先-作为简单的标记名(如"ul"
)或类选择器(如".menu"
)或二者的组合(如"ul.menu"
。 该函数将从原始节点向上迭代,并返回与字符串模式匹配的第一个祖先节点;如果找不到此类祖先,则返回null
。
函数的作用是什么
此功