[英]Binding multiple events (resize and load) to addEventListener (JQuery)
正在谷歌搜索,但找不到我的问题的正确答案。 网上有一些解决方案会有所帮助,只是我需要更改整个代码结构,而这并不是我想要的。
window.addEventListener('DOMContentLoaded', function(event) { if(window.matchMedia("(min-width: 767px)").matches){ Array.prototype.slice.call(document.getElementsByClassName("tabcontent")).forEach(function(element, index) { element.addEventListener("mouseleave", function(event) { event.target.style.display = "none"; }); document.getElementById("categories-list-box").addEventListener("mouseleave", function(event) { if (event.relatedTarget.className.indexOf("tabcontent") == -1) { tabcontent = document.getElementsByClassName("tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } } }) }); } })
function addListenerMulti(el, s, fn) {
s.split().forEach(e => el.addEventListener(e, fn, false));
}
和用法:
addListenerMulti(window, 'mousemove touchmove', function(){…});
将您的代码放在一个函数中,并使用 addEventListener 调用它
window.addEventListener('DOMContentLoaded', myFunction);
window.addEventListener('resize', myFunction);
function myFunction(){
if(window.matchMedia("(min-width: 767px)").matches){
Array.prototype.slice.call(document.getElementsByClassName("tabcontent")).forEach(function(element, index) {
element.addEventListener("mouseleave", function(event) {
event.target.style.display = "none";
});
document.getElementById("categories-list-box").addEventListener("mouseleave", function(event) {
if (event.relatedTarget.className.indexOf("tabcontent") == -1) {
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
}
})
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.