2016-07-27 35 views
1

我做了一個簡單的警告框,引導這樣的如何隱藏引導警告框,當沒有消息

<div class="alertBox"> 
    <span role="alert" class="alert alert-info"> bag.session.username </span> 
</div> 

當沒有警報(框爲空),箱子還是這樣表示在頁面上。 enter image description here

所以我試圖掩蓋它時,它是空的,像這樣:

<script type="text/javascript"> 
$(document).ready(function() { 
    if (bag.session.username) { 
     $(".alertBox").show(); 
    } 
    else { 
     $(".alertBox").hide(); 
    } 
}); 
</script> 

這基本上說,如果警報消息是存在的,顯示框,如果沒有,將其隱藏。但是,這不符合預期。箱子在那裏,直到沒有警報。我該如何解決這個問題?

+2

這哪裏是'bag.session.username'是從哪裏來的? – Harangue

+0

有點偏題:在你的HTML中,你是否想要打印出一些名爲'bag.session.username'的JS變量?因爲你得到的只是文本'bag.session.username'。 – WillardSolutions

+0

有趣的是,他的盒子是空的,它應該包含bag.session.username –

回答

1

確保首先隱藏您的警報框。此外,它看起來像把JavaScript變量放到你的HTML中。此外,字符串bag.session.username可能始終評估爲true。也許這個?

<script type="text/javascript"> 
$(document).ready(function() { 
    if (typeof bag.session.username != "undefined") { 
     $(".alertBox span").text(bag.session.username); 
     $(".alertBox").show(); 
    } 
    else { 
     $(".alertBox").hide(); 
    } 
}); 
</script> 
+0

謝謝這對我有效,順便說一下var不在我的HTML中,這些只是片段 – OneMoreQuestion

+0

@OneMoreQuestion我沒有足夠的代表評論上述。我認爲沒有任何問題檢查var是否未定義。通過每個bag.session var可能會被設置並將其設置爲null是沒有意義的。 – Mike

+0

在這種情況下檢查未定義是好的,因爲它包括零和空字符串以及未定義的ckcking – OneMoreQuestion

1

下面的代碼應該可以幫助您解決問題。讓我知道如果您有任何疑問

<style> 
     .foo{ 
      display: none; 
     } 
</style> 

HTML和JS會

<body> 
    <div class="alertBox"> 
     <span role="alert" class="alert alert-info"></span> 
    </div> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("span.alert").each(function(){ 
       if(!$(this).text().trim().length){ 
        $(".alertBox").addClass("foo"); 
       } 
      }) 

     });