如何从HTML DOM完全隐藏div?
问题描述:
我在我的页面有2个div,每个div都有class a,b。 我也有2个网址如何从HTML DOM完全隐藏div?
- www.site.com/a
- www.site.com/b
目标:我想隐藏div
与b
上课的时候我在现场/ a ,反之亦然。
目标是将它们完全从DOM中隐藏起来。 我不知道该怎么做。
我已经试过
JS
var lastSegment = location.pathname.split('/').pop();
if (lastSegment === 'a') {
$(".a").removeClass("hidden");
} else {
$(".b").removeClass("hidden");
}
CSS
.hidden {
display: none!important;
visibility: hidden!important;
}
HTML
<div class="a hidden"> // Logic </div>
<div class="b hidden"> // Logic </div>
结果
我可以看到两者的div当我做检查的元素。
任何帮助/提示/在此建议,将通过多添加和删除类的赞赏
答
jQuery的.detach()正在这样做。
的.detach()方法是一样的一个.remove(),不同之处在于.detach() 保持与移除的元件相关联的所有的jQuery的数据。此方法在稍后将已移除的元素重新插入到 DOM中时非常有用。
答
你不能摆脱对DOM。有多种方法可以解决这个问题。
-
使用Javascript完全添加/删除div。不要同时渲染。
if(lastSegment === "a") { $(".target").append('<div class="a">Link A</div>'); } else { $(".target").append('<div class="a">Link B</div>'); }
用暗影DOM - ShadowDom元件未被检查元素,除非使埋藏在内心深处的设置图标一些设置可见。
教程:http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom/ 感谢
如果您已经在使用jQuery,则最简单的方法就是使用$(.a).hide(),而不是手动操作类和css。 – doldt
如果您不想在DOM中使用div,那么您为什么要在标记中使用它? – Amit
你是否在文件加载后运行js? –