我有一个带有以下项目的导航栏
<li>
<a href="#" data-parent="1" data-selector="nav a" class="">Blog</a>
</li>
<li>
<a href="#" data-parent="1" data-selector="nav a" class="">Home</a>
</li>
当我将鼠标悬停在项目上时,相应链接的类将hover
类似于如果我将鼠标悬停在Blog
列表上
<li>
<a href="#" data-parent="1" data-selector="nav a" class="hover">Blog</a>
</li>
<li>
<a href="#" data-parent="1" data-selector="nav a" class="">Home</a>
</li>
当我单击它时,班级将从hover
变为open
。
我要听点击的情况下,要知道<a>
与data-selector="nav a"
被点击。无论是Blog还是Home,我都想调用一个函数。如果<a>
有data-selector="nav a"
点击和类是open
我想要做一些其他的任务。
使用document.querySelectorAll('li a')
获取所有链接,然后使用forEach
,通过添加正确的事件侦听器到您的链接link.addEventListener(event, handler)
。
您可以使用mouseenter
和mouseleave
事件hover
通过classList
链接的属性添加和删除类。
您可以使用该click
事件来处理点击,然后link.getAttribute('data-selector')
可以查询data-selector
属性并对其进行处理:
const links = document.querySelectorAll('li a');
links.forEach(link => {
link.addEventListener('mouseenter', event => {
if (!link.classList.contains('open')) {
link.classList.add('hover');
}
});
link.addEventListener('mouseleave', event => {
link.classList.remove('hover');
});
link.addEventListener('click', event => {
link.classList.remove('hover');
link.classList.toggle('open');
const dataSelector = link.getAttribute('data-selector');
if (dataSelector === 'nav a') {
console.log('this is a [nav a] link');
} else {
console.log('this is NOT a [nav a] link');
}
});
});
.hover {
color: blue;
}
.open {
color: green;
}
<li>
<a href="#" data-parent="1" data-selector="nav a">Blog</a>
</li>
<li>
<a href="#" data-parent="1" data-selector="not nav a">Home</a>
</li>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句