简体   繁体   English

如何完全从HTML DOM中隐藏div?

[英]How can I hide a div completely from HTML DOM?

I have 2 divs in my page, each div have class a , b. 我的页面上有2个div,每个div都有a,b类。 I also have 2 urls 我也有2个网址

  • www.site.com/a www.site.com/a
  • www.site.com/b www.site.com/b

Goal : I want to hide div with class b when I'm at site/a and vice of versa. 目标 :当我在站点/ b时,我想隐藏b类的div ,反之亦然。

The goal is to hide them completely from the DOM. 目的是将它们完全隐藏在DOM中。 I'm not sure how to do that. 我不确定该怎么做。

I've tried 我试过了

JS JS

var lastSegment = location.pathname.split('/').pop();

if (lastSegment === 'a') {

    $(".a").removeClass("hidden");

} else {

    $(".b").removeClass("hidden");

} 

CSS 的CSS

.hidden {
  display: none!important;
  visibility: hidden!important;
}

HTML 的HTML

<div class="a hidden"> // Logic </div>
<div class="b hidden"> // Logic </div>

Result 结果

I can see both of the div when I do inspect element. 当我检查元素时,我可以看到两个div。

Any helps / hints / suggestions on this will be much appreciated 任何帮助/提示/建议对此将不胜感激

jQuery's .detach() is doing this. jQuery的.detach()正在执行此操作。

The .detach() method is the same as .remove(), except that .detach() keeps all jQuery data associated with the removed elements. .detach()方法与.remove()相同,除了.detach()保留与已删除元素关联的所有jQuery数据。 This method is useful when removed elements are to be reinserted into the DOM at a later time. 当稍后将删除的元素重新插入DOM时,此方法很有用。

Here: 这里:

   var lastSegment = location.pathname.split('/').pop();

    if (lastSegment === 'a') {
        $(".b").remove();
    } else {
        $(".a").remove();
    }

You can use remove() function to remove it completely. 您可以使用remove()函数将其完全删除。

You cannot get rid on the DOM by adding and removing classes. 您不能通过添加和删除类来摆脱DOM。 There are multiple ways you can tackle this . 有多种方法可以解决此问题。

  1. Add/Remove divs using Javascript completely. 完全使用Javascript添加/删除div。 Don't render both. 不要同时渲染两者。

     if(lastSegment === "a") { $(".target").append('<div class="a">Link A</div>'); } else { $(".target").append('<div class="a">Link B</div>'); } 
  2. Use Shadow DOM - ShadowDom elements are not visible with inspect element, unless making some settings buried deep inside setting icons. 使用Shadow DOM-ShadowDom元素对于inspect元素不可见,除非进行一些设置深埋在设置图标中。

Tutorial : http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom/ Thanks 教程: http : //www.html5rocks.com/zh-CN/tutorials/webcomponents/shadowdom/谢谢

you can try this 你可以试试这个

if (lastSegment === 'a') {

    $(".a").removeClass("hidden");
    $(".b").addClass("hidden");

} else {

    $(".a").addClass("hidden");
    $(".b").removeClass("hidden");


} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM