为了账号安全,请及时绑定邮箱和手机立即绑定

在没有jQuery的情况下找到最接近的元素

在没有jQuery的情况下找到最接近的元素

墨色风雨 2019-10-28 16:50:36
我试图找到没有jquery的具有特定标签名称的最接近的元素。当我单击a时,<th>我想访问<tbody>该表的。有什么建议吗?我读过有关偏移量的信息,但并不太了解。我应该只使用:假设已经设置了单击元素th.offsetParent.getElementsByTagName('tbody')[0]
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

晚会很少(很晚),但是。这应该做的伎俩:


function closest(el, selector) {

    var matchesFn;


    // find vendor prefix

    ['matches','webkitMatchesSelector','mozMatchesSelector','msMatchesSelector','oMatchesSelector'].some(function(fn) {

        if (typeof document.body[fn] == 'function') {

            matchesFn = fn;

            return true;

        }

        return false;

    })


    var parent;


    // traverse parents

    while (el) {

        parent = el.parentElement;

        if (parent && parent[matchesFn](selector)) {

            return parent;

        }

        el = parent;

    }


    return null;

}


查看完整回答
反对 回复 2019-10-28
?
慕容708150

TA贡献1831条经验 获得超4个赞

在不使用jQuery的情况下,按标签名称获取最接近的元素的方法如下:


function getClosest(el, tag) {

  // this is necessary since nodeName is always in upper case

  tag = tag.toUpperCase();

  do {

    if (el.nodeName === tag) {

      // tag name is found! let's return it. :)

      return el;

    }

  } while (el = el.parentNode);


  // not found :(

  return null;

}


getClosest(th, 'tbody');


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 443 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信