2015-12-23 92 views
-1

我在jQuery中遇到了一些隱藏/顯示功能的問題,我似乎無法弄清楚。我有一個if/else語句,它檢查HTML中的數據屬性,然後根據其結果隱藏/顯示元素。我已經能夠記錄整個功能,並且在他們應該的時候觸發正確的語句,但是我遇到的問題是讓內容在隱藏後重新出現。它隱藏正確,但永遠不會回來。下面是代碼:jQuery的問題隱藏/顯示

var bar = $("#alert"); 
     if (!supressed) { 
     bar.animate({height:0}); 
     bar.parent().animate({height:0}, function() { 
      $(this).hide() 
     }); 
     } 

     if (supressed) { 
     console.log("Supressing"); 
     bar.replaceWith(newBar); 
     bar.parent().animate({height: "45px"}, function() { 
     $(this).show() 
     }); 
     bar.animate({height: "45px"}); 
    } 

的問題是存在的,其中console.log("Supressing");語句。它將它記錄到控制檯,所以我知道它正在工作,但由於某種原因,酒吧根本沒有出現。

如果我做了一個檢查元素,我仍然可以看到#alert的父項仍然有style="height: 0px; display: none;"就可以了。

我哪裏錯了?

+1

你已經錯過了後'VAR supressed = TRUE;和'supressed'始終按照你的代碼真正的分號。什麼是'newBar'變量以及爲什麼'bar.animate({height:「45px」});'動畫之後? –

+0

newBar的價值是什麼? –

+0

這將有助於查看隨之而來的HTML。 –

回答

0

問題是您正在使用replaceWith函數(else語句後的第一行)。然後在元素從DOM中移除後調用bar.parent()。

也許你的意思是說

newBar.parent().animate({height: "45px"}, function() { 
    $(this).show() 
}); 
+0

我解決了這個稍微不同,但它基本上使用相同的邏輯。謝謝您的幫助。 –