js触发点击元素的优雅写法,parentNode已经写废了


虽然是Angular,但是可以用原生解决,希望大佬不吝赐教!
最近遇到了一个场景:监听点击事件去判断触发的元素id是否为对应的按钮,如果是,则设置一个标志位,利用标志位可以做其他事情。
主要需要优化位置在if里面的三个判断。
目前的dom结构有四层,如果满足现有场景,只能在if里再加一层parentNode的判断。
沙箱源代码路径(可直接编辑):https://stackblitz.com/edit/a...

阅读 2k
2 个回答
function findParentNodeByProperty($dom, $property, $value, $deep)
{
    let cnt = 0;
    while($dom !== null)
    {
        if(cnt >= $deep)
            break;

        cnt ++;

        if($dom[$property] === $value)
            return $dom;

        $dom = $dom.parentNode;
    }

    return null;
}
findParentNodeByProperty(event.target, 'id', 'myDom', 4);

用 closest event.target.closest('#id')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题