Basic learning

2019-03-14  本文已影响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;
}
上一篇下一篇

猜你喜欢

热点阅读