查找祖先DOM节点

对于这个小巧的函数系列的第八篇文章,我将介绍一个名为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

函数的作用是什么

此功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值