有關最小化問題的問題是在您的代碼的這一部分。
$(minimize).click(function() {
var id = $(this).parents(".window").id;
$(this).parents(".window").css({
"display": "none"
});
if(id = $(".w1")) {
$(".app1").css({
"background-color": "#aaaaaa"
});
} else if(id = $(".w2")) {
$(".app2").css({
"background-color": "#aaaaaa"
});
}
});
這段代碼似乎有兩個問題。
在這行代碼var id = $(this).parents(".window").id;
中,您正在獲取元素.window的ID,而不是類。 在您的Windows的HTML代碼中,您已將「w1」和「w2」定義爲類(<div class='window w2'>
),但您正在提取該ID。我現在想要做的是獲取元素本身,而不是元素的ID:var element = $(this).parents(".window")[0];
注意:我們上傳[0]
,因爲函數.parents()返回元素列表。由於我們預計只有1個項目,因此我們會得到列表中的第一個項目,即索引爲0的項目。
現在,爲什麼窗口圖標#1始終高亮顯示,而不是窗口圖標# 2在以下代碼行中:if(id = $(".w1"))
。 如果要將變量的值與另一個值進行比較,則必須使用「等於」運算符==
。單=
是賦值運算符,當你想給一個值的變量被使用。
與element == $(".w*")[0]
替換的id = $(".w*")
兩個場合,你的最小化的問題應該得到解決。
注:我從「ID」到「元」爲清楚起見,因爲我們面對的不是ID的再修改該變量的名稱。
注2:我們追加[0]再次,因爲匹配的一類元素取也將返回元素的列表。由於我們預計只會有一個「W1」和一個「W2」,我們得到在列表中的第一個元素。
嗨!在你的瀏覽器中打開開發工具,在第73行放置一個斷點(用「JS」窗格測量),看看'id'是什麼,'$(this).parents('。window')'是什麼(提示:不是標量)。除此之外,由於外部網站可能在沒有任何控制權的情況下發生變化或消失,將代碼的相關部分移到問題中將有助於我們將知識保留在此處,甚至在將來也可以使用。謝謝! :) – Cornelius
刪除那些w1 w2變量。看看[.clone()](https://api.jquery.com/clone/) –
@gerdi這看起來很有趣,但我仍然不明白我該如何使用它。對不起,我是JQuery的初學者。 –