美文网首页
Basic learning

Basic learning

作者: 黑色的五叶草 | 来源:发表于2019-03-14 22:48 被阅读0次

DOM:

  • 一、正确的事件委托

错误的写法:

ul.addEventListener('click', function (e) {
    if (e.target.tagName.toLowerCase() === 'li') {
        console.log('...');
    }
})

这么写的原因是假如想要点击的是li就执行回调,但是li里面嵌套了其他标签如span。此时就需要用while循环一直到找不到指定的节点再跳出循环。

function enTrust (element, eventType, selector, fn) {
    element.addEventListener(eventType, e => {
        let el = e.target;
        while (!el.matches(selector)) {
            if (element == el) {
                el = null;
                break;
            }
            el = el.parentNode;
        }
        el && fn.call(el);
    });
    return element;
}

相关文章

网友评论

      本文标题:Basic learning

      本文链接:https://www.haomeiwen.com/subject/nlihmqtx.html