js事件中的event默认参数,会返回target和currentTarget来获取当前的事件触发对象,两者的区别:
event.currentTarget:指的是绑定了事件监听的元素
event.target:指的是真正触发事件的元素节点
其中,event.target经常使用的属性如下:
event.target.innerHTML // 获取事件触发元素的内容 标签+text event.target.className // 获取事件触发元素的class名 "demo" event.target.children // 获取事件触发元素的子节点 HTMLCollection(3) [li, li, li] event.target.nodeName // 获取事件触发元素的HTML标签名 "li" event.target.localName // 获取事件触发元素的HTML标签名 "li"
试用案例,利用事件委托,实现导航栏切换:
1、html代码
<ul> <li class="on">测试1</li> <li>测试2</li> <li>测试3</li> </ul>
2、js代码
let ul = document.getElementsByTagName("ul") ul[0].addEventListener('click', clickFn, false) function clickFn(event) { let list = event.currentTarget.children let demo1 = event.target // 将所有的li的on去掉,再单独给当前点击的li加上on if (demo1.localName === 'li') { for (let i = 0; i < list.length; i++) { list[i].className = '' } event.target.className = 'on' } }
3、最终效果: