在你的代碼,它控制顯示或一個元素或其他的隱藏,你只需要使用.toggle()
:
$("#indexpage,#imageinfo").toggle();
則每次.toggle()
被調用,一個是可見的將被隱藏,而一個隱藏的將是可見的。
這假定你已經設置你的CSS有一個顯示,其他默認情況下隱藏。所以,你的頁面的CSS應該包含:
#indexpage {
display: none;
}
如果不爲你工作,你仍然要顯示或隱藏基於對方是否是可見的一個,使用.toggle()
傳遞指示是否顯示或隱藏元素的布爾參數。使用.is()
和:visible
獲取該布爾值。
$("#imageInfo").toggle(!$("#indexpage").is(":visible"));
編輯:只是要注意,有一對夫婦的您的例子不工作的原因。
首先,您似乎試圖使用.hide()
與.css("visibility")
。但是,.hide()
將元素的display
設置爲none
。一旦設置,visibility
值將不起作用。 .hide()
的必然結果是.show()
。但有時可能優選.toggle()
,因爲它封裝了.hide()
和.show()
的功能。當您想要根據特定條件顯示或隱藏元素時,尤其如此。在這種情況下,將一個布爾值傳遞給.toggle()
,指出該元素是否應該可見。你可以從這個降低代碼:
if (checkSomeCondition()) {
$("#myElement").show();
}
else {
$("#myElement").hide();
}
到代碼中添加一行:
$("#myElement").toggle(checkSomeCondition());
其次,你的代碼失敗的另一個原因是,你正在評估visibility
的值而不是分配可見性值。 ==
運算符是相等運算符,用於比較兩個值並返回布爾值。要分配一個值,你需要使用賦值運算符(=
):
var a = 1;
a == 2; // returns false, a is unchanged
a = 2; // now a is 2
但是,你也不會在這種情況下使用賦值操作符,因爲你不能將值分配給的結果函數調用。即,someFunction() = 1
是無效的JavaScript。在jQuery中,要讀取值,可以使用單個參數。要編寫一個值,你傳遞第二個參數,指示新值:
$('#imageinfo').css('visibility', 'visible');
這糾正語法,但由於上面的第一個問題,它不能解決你的問題 - 你需要設置display
而不是visibility
。
這可能很難做到,但這個問題的標題非常模糊。你能想出一個更好的一個,以便其他人在遇到同樣的問題時可能受益? –