这是我的功能:document.querySelector('body').addEventListener('click',e=>{getRandomImagePair()});
当我单击身体上的任何地方时,都会发生某些事情。我有两个div
和.more
,如果单击它们,则会执行功能.wd
。我该如何做才能使我单击链接而不会触发该功能?
我在下面尝试了此方法,它可以工作,但是getRandomImagePair()
div不会触发另一个需要的其他函数。
$('.more, .wd').on('click', function(event) {
event.stopPropagation();
});
最佳答案
使用event delegation,只需检查className
元素的event.target
。在事件处理程序回调中使用if
语句,以防止单击getRandomImagePair
的链接:
function getRandomImagePair() {
console.log('getRandomImagePair called');
}
//using event delegation
document.querySelector('body').addEventListener('click', e => {
if (e.target.className !== 'wd' && e.target.className !== 'more') {
getRandomImagePair();
}
});
.wd,
.more {
color: blue;
text-decoration: underline;
}
<body>
<div class="more">.more</div>
<div class="wd">.wd</div>
<p>Here is some other stuff</p>
<p>that when clicked on should still fire event handler</p>
</body>