[英]How to toggle div's presence instead of visibility
當某個語句為真時,我正在嘗試切換div的存在。
我正在使用以下JavaScript / AJAX的ATM:
function checkSession() {
$.ajax({
url: '/dev/php/checkSession.php',
type: 'POST',
error: function(ja){
console.log(ja);
},
success: function(response) {
if(response == "")
{
var elem = document.getElementById("liitem");
elem.innerHTML = "Inloggen";
var elem2 = document.getElementById("aanmelden");
elem2.style.visibility = 'visible';
}
else {
sessionmaybe = response;
var elem = document.getElementById("liitem");
elem.innerHTML = 'Uitloggen';
var elem2 = document.getElementById("aanmelden");
elem2.style.visibility = 'hidden';
}
}
})
}
問題是,當我調整窗口大小時,div仍然具有樣式。
多虧了浮動,菜單通常會放在徽標旁邊。
有沒有辦法切換div的樣式?
使用style.display= "none"
,給定visibilty
將隱藏該元素並保留DOM元素將要保留的空間,這與display:none
不同,它將從DOM中刪除
從MDN
隱
該框是不可見的(完全透明,未繪制任何內容),但仍會影響布局。 如果元素的后代具有可見性,則將可見:visible(在IE 7之前的版本中不起作用)。
function checkSession() {
$.ajax({
url: '/dev/php/checkSession.php',
type: 'POST',
error: function(ja){
console.log(ja);
},
success: function(response) {
if(response == "")
{
var elem = document.getElementById("liitem");
elem.innerHTML = "Inloggen";
var elem2 = document.getElementById("aanmelden");
elem2.style.style.display = 'inline-block'; // whatever property fits better here
}
else {
sessionmaybe = response;
var elem = document.getElementById("liitem");
elem.innerHTML = 'Uitloggen';
var elem2 = document.getElementById("aanmelden");
elem2.style.style.display = 'none';
}
}
})
}
如果使用display: none
則該元素仍將存在於DOM中,但不會占用任何空間。 在使用jQuery時,您可以簡化此過程以調用show()
/ hide()
或使用toggle()
:
function checkSession() {
$.ajax({
url: '/dev/php/checkSession.php',
type: 'POST',
error: function(ja) {
console.log(ja);
},
success: function(response) {
$("#liitem").text(response == "" ? 'Inloggen' : 'Uitloggen');
$("#aanmelden").toggle(response == "");
}
});
}
使用display: none
& display: block
屬性代替visibility
。 與visibility
不同, display
不會占用DOM中的空間。
但是,與.aanmelden
元素關聯的任何transition
或animation
現在都將消失,因為display
將呈現狀態,而不是進行過渡所需的步進功能。
function checkSession() {
$.ajax({
url: '/dev/php/checkSession.php',
type: 'POST',
error: function(ja){
console.log(ja);
},
success: function(response) {
if(response == "")
{
var elem = document.getElementById("liitem");
elem.innerHTML = "Inloggen";
var elem2 = document.getElementById("aanmelden");
elem2.style.display = 'block';
}
else {
sessionmaybe = response;
var elem = document.getElementById("liitem");
elem.innerHTML = 'Uitloggen';
var elem2 = document.getElementById("aanmelden");
elem2.style.display = 'none';
}
}
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.