有关最小化问题的问题是在您的代码的这一部分。
$(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的初学者。 –