簡體   English   中英

頁面重新加載后如何保持div的類

[英]How to keep class of a div after page reload

大家好,我有一個導航菜單,依此類推,一切正常。 我添加了一個帶有超棒字體的類,當我單擊不同的菜單項時,它會切換。 當我單擊特定鏈接時,一個javascript將比較URL,因此菜單將被展開。 不幸的是,當我單擊鏈接時,菜單將被展開,但是我的班級正進入默認狀態。 我不知道必須在代碼的哪一部分進行這項工作。 我將不勝感激任何建議,並希望有一個沒有Cookie或外部腳本的解決方案。 據我所知,當我更改代碼時,只有第一個符號發生變化,或者所有符號都發生變化,但沒有一個發生變化。

這是托管服務商的工作示例, 單擊此處是單擊 “ two.html”頁面,我希望將擴展菜單上的箭頭符號更改為“ up”類(默認為down)

這是小提琴 (例如刪除的代碼)

可以在測試站點上看到html

這是JavaScript

$(document).ready( function() {

            // initialize accordion
            $('#Accordion ul').each( function() {
                var currentURI = window.location.href;
                var links = $('a', this);
                var collapse = true;
                for (var i = 0; i < links.size(); i++) {
                    var elem = links.eq(i);
                    var href = elem.attr('href');
                    var hrefLength = href.length;
                    var compareTo = currentURI.substr(-1*hrefLength);

                    if (href == compareTo) {
                        collapse = false;
                        $(elem).css({ 'background-color': '#a7a9ac', 'color': '#000' });
                        break;
                    }


                };


                if (collapse) {
                    $(this).hide();

                }
            });


            $("#Accordion").delegate('div', 'click', function() {

                $('#Accordion div').removeClass( "up" );
                $('#Accordion div').addClass( "down" );
                var ul = $(this).next('ul');
                if (ul.is(':visible')) {
                    ul.slideUp(500);

                } else {
                    $('#Accordion ul').not(ul).slideUp(500);
                    ul.slideDown(500);
                    var div = $(this)
                $( this ).toggleClass( "up" );
                }


            });
        });

和CSS

    @charset "utf-8";
/* CSS Document */

body {
    font: 0.8em "Lucida Sans Unicode", "Lucida Grande", Arial, Helvetica, sans-serif;
    color: black;
    background: #F8F8FF;
}
body,html {
    margin: 0 auto;
    padding: 0;
    height:100%;
}

h2{margin-left:10px;padding-top:10px;}
p{padding-left:10px;}

body > #wrapper {height: auto; min-height: 100%;}


#wrapper {
    width: 990px;
    margin: auto;
    padding: 0;
    height:100%;
    border-left:1px solid #a7a9ac;
    border-right:1px solid #a7a9ac;
    border-bottom:1px solid #a7a9ac;
    -webkit-box-shadow: 0px 1px 26px 7px rgba(0,0,0,0.25);
-moz-box-shadow: 0px 1px 26px 7px rgba(0,0,0,0.25);
box-shadow: 0px 1px 26px 7px rgba(0,0,0,0.25);

background: url(inhalt.png) repeat-y center top fixed;
}

#header{
    height:100px;
    background:#363636;
    color:silver;
    font: 4em "Lucida Sans Unicode", "Lucida Grande", Arial, Helvetica, sans-serif;
    line-height: 120px;
    padding: 0 20px;
    }

#navi{
    float:left;
    background:#F8F8FF;
    width:199px;
    margin: 0;
    padding: 0;
    height:100%;
    }

#text{
    float:right;
    width:760px;
    padding-left:10px;
    background:#F8F8FF;

    }


#nav2 {list-style: none;    padding: 5px 0 5px 0;text-align:center;margin:0;}

#foot a {vertical-align: -moz-middle-with-baseline; text-decoration: none;  color:white;text-align:center;}

#foot li a:hover {text-decoration:underline;color:white;text-align:center;}




#foot {
    color: white;
    text-align: center;
    background:#363636;
    height:30px;
    width:990px;
    margin: 0 auto;
    border:1px solid #363636;
    clear:both;
}

.top{color:black;text-decoration:underline;}
.top:hover{color:red;text-decoration:underline;}

#Accordion,#Accordion ul{
list-style:none;
padding:0;
margin:0;
}

.cssmenu {
    list-style: none;
    padding: 0;
    margin: 0;
    font-size: 0.9em;
    width:100%;
}
.border{border-bottom:1px solid #a7a9ac;}
.bordertop{border-top:1px solid #a7a9ac;}
.cssmenu li a {
    display: block;
    padding: 5px 20px;
    color: black;
    text-decoration: none;
    background:#DBDBDB;
}

.cssmenu ul li span{ display: block;
    padding: 5px 20px;

    background-color: #DBDBDB;
    border-top:1px solid #a7a9ac;
    cursor:pointer;
    color:#000;

}

.cssmenu a:hover {
  color: #FFF;
  background-color:#363636;
}.cssmenu span:hover {
  color: #FFF;
  background-color:#363636;
}
.submenu li a {
    display: block;
    padding: 5px 40px;
    color: black;
    text-decoration: none;
    background:#DBDBDB;
    border-top:1px solid #a7a9ac;
    }
    #test{


    }
  .down{    
      }
  .down::after  {
content: '\f107'; 
    color: black; 
  font-family: FontAwesome;
  position: absolute;
margin-top: -20px;
margin-left: 170px;
  } 

.up{    
      }
.up::after  {
content: '\f106'; 
    color: black; 
  font-family: FontAwesome;
  position: absolute;
margin-top: -20px;
margin-left: 170px;
  }

先感謝您

如果需要,可以使用Local Storage記住應用於元素的類,然后在刷新/重新加載時重新應用它。

在JQuery中是這樣的:

$(document).ready(function() {
    if(localStorage.getItem("storageItemName")) {
        $(target-element).addClass('myClass')
    }
});

$(window).unload(function() {
    localStorage.setItem("storageItemName", $(target-element).hasClass('myClass'));
});

這里不需要使用Cookie或本地存儲,因為您不需要在頁面之間保留數據。

我認為這里的主要問題是您沒有切換上/下課。 當您單擊div時,您無需檢查當前班級是上還是下班,因此您總是將手風琴中每個div的班級設置為down。 另外,您只想設置單擊的div的類。 並非手風琴中的每個div。 您應該執行以下操作:

$("#Accordion div").click(function() {
    // Get the next ul that will be expanded/collapsed
    var nextUL = $(this).next('ul');
    // Is the current div already expanded?
    if ($(this).hasClass("up")) {
        // The current div is already expanded. Collapse it.
        $(this).removeClass("up");
        $(this).addClass("down");
        nextUL.slideUp(500);
    } else if ($(this).hasClass("down")) {
        // The current div is currently collapsed. Expand it.
        $(this).removeClass("down");
        $(this).addClass("up");
        nextUL.slideDown(500);
    }
});

我知道了!

我必須做出正確的If-query

if($(this).css('display') == 'block')
                {
                    $(this).prev('div').removeClass( "down" );
                    $(this).prev('div').addClass( "up" );
                }

這是完整的Javascript,我希望有人能對此有所幫助。 使用實際的腳本,它可以記住已單擊的鏈接,當您單擊div時,它將切換符號,並且在刷新頁面時會更改擴展菜單的特定符號。 沒有Cookie或本地存儲。 謝謝您的幫助,並提供了一些想法,到目前為止,我已經知道了。

$(document).ready( function() {

            // initialize accordion
            $('#Accordion ul').each( function() {
                var currentURI = window.location.href;
                var links = $('a', this);
                var collapse = true;
                for (var i = 0; i < links.size(); i++) {
                    var elem = links.eq(i);
                    var href = elem.attr('href');
                    var hrefLength = href.length;
                    var compareTo = currentURI.substr(-1*hrefLength);
                    var div = $(this);
                    if (href == compareTo) {
                        collapse = false;
                        $(elem).css({ 'background-color': '#a7a9ac', 'color': '#000' });
                        break;
                    }
                };

                if (collapse) {
                    $(this).hide();
                }

                if($(this).css('display') == 'block')
                {
                    $(this).prev('div').removeClass( "down" );
                    $(this).prev('div').addClass( "up" );
                }

            });

            $("#Accordion").delegate('div', 'click', function() {

                $('#Accordion div').removeClass( "up" );
                $('#Accordion div').addClass( "down" );
                var ul = $(this).next('ul');
                if (ul.is(':visible')) 
                {
                    ul.slideUp(500);
                } 
                else 
                {
                    $('#Accordion ul').not(ul).slideUp(500);
                    ul.slideDown(500);
                    var div = $(this)
                    $( this ).toggleClass( "up" );
                }                   
            });             
        });

在這里,我還有一個更新的小提琴,沒有單純的菜單,沒有沒有用的代碼。

保持一個<div>頁面重新加載后顯示</div><div id="text_translate"><p>問題很簡單,就是找不到解決方法。 我只是通過單擊按鈕來顯示文本,但是當頁面重新加載時,我希望文本仍然顯示而無需再次單擊按鈕。 我的代碼如下:</p><pre> &lt;script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"&gt; &lt;/script&gt; &lt;div id='result' style: 'display:none;'&gt; &lt;p&gt;&lt;/p&gt; &lt;/div&gt; &lt;form method="post" action="#"&gt; &lt;input type="button" value="Show" id='button'/&gt; &lt;/form&gt; &lt;script type="text/javascript"&gt; $(document).ready(function(){ var div1Show = localStorage.getItem('div1_show'); if (div1Show) { $("#div1").remove(); } else { $("#div1").show(); } $("#button").click(function(){ $("#result").text("Complete"); $("#div1").show(); localStorage.setItem('div1_show', 'true'); }); }); &lt;/script&gt;</pre></div>

[英]Keep a <div> displayed after page reload

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 保持一個<div>頁面重新加載后顯示</div><div id="text_translate"><p>問題很簡單,就是找不到解決方法。 我只是通過單擊按鈕來顯示文本,但是當頁面重新加載時,我希望文本仍然顯示而無需再次單擊按鈕。 我的代碼如下:</p><pre> &lt;script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"&gt; &lt;/script&gt; &lt;div id='result' style: 'display:none;'&gt; &lt;p&gt;&lt;/p&gt; &lt;/div&gt; &lt;form method="post" action="#"&gt; &lt;input type="button" value="Show" id='button'/&gt; &lt;/form&gt; &lt;script type="text/javascript"&gt; $(document).ready(function(){ var div1Show = localStorage.getItem('div1_show'); if (div1Show) { $("#div1").remove(); } else { $("#div1").show(); } $("#button").click(function(){ $("#result").text("Complete"); $("#div1").show(); localStorage.setItem('div1_show', 'true'); }); }); &lt;/script&gt;</pre></div> 重新加載頁面后如何保持活動的listGroup? 重新加載后如何將數據保留在頁面中? 頁面重新加載后如何顯示隱藏的div? 刷新頁面后如何隱藏div? 頁面刷新后如何保持div隱藏? 頁面重新加載后顯示 div 重新加載頁面后如何保持當前選項卡處於活動狀態? 重新加載頁面后如何保持打開當前選項卡 頁面重新加載后如何保留錨 position
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM