我正在实施一个简单的网站,其中有一个切换边栏。当我点击页面上的某个地方(侧边栏除外)时,我想隐藏侧边栏。所以我认为我应该获取页面上的所有元素,除了具有侧栏类的元素。用普通的javascript有没有办法做到这一点? JQuery有:not()为此选择,但我试图不使用JQuery ...... :(
答案 0 :(得分:0)
JQuery有:not()选择此
它实际上是CSS,虽然jQuery扩展它以允许所有选择器(CSS的:not
仅允许:not
内的simple selector。你的是一个简单的选择器,所以你可以使用:not
:
var list = document.querySelectorAll(":not(.sidebar)");
<强>然而强>:
当我点击页面上的某个地方(侧边栏除外)时,我想隐藏侧边栏。
我不会通过在每个元素上设置事件处理程序来实现它。相反,我会在document
上设置一个处理程序,然后检查事件是否在通往文档的途中通过侧栏传递,例如:
document.addEventListener("click", function(e) {
if (e.target.closest(".sidebar")) {
return; // The click passed through the sidebar
}
// close the sidebar
});
使用Element#closest
,它出现在所有现代浏览器中,并且可以为过时的浏览器进行填充。