我最近碰巧搞乱了JQuery,我决定制作类似win xp的东西,你可以使用windows:最小化,关闭和最大化。当最小化时,窗口应在任务栏中标记为最小化。
我的代码:http://codepen.io/julian-a-avar/pen/xbaRJz
但是你看,我碰巧在我的代码中发现了以下问题:
z-index
代码碰巧对我的大脑来说太复杂了,我无法确定问题究竟在哪里。我所知道的是,问题出在line 42
和line 124
之间。你可以看到它的范围很广。
抱歉,我无法做得更好,我只是不知道问题出在哪里。
答案 0 :(得分:1)
关于最小化问题的问题在于代码的这一部分。
$(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代码中,您已经定义了&#34; w1&#34;和&#34; w2&#34;作为类(<div class='window w2'>
),但您正在获取ID。我建议现在做的是获取元素本身,而不是元素的ID:var element = $(this).parents(".window")[0];
注意:我们添加[0]
,因为函数.parents()返回元素列表。由于我们预计只有1个项目,我们得到列表中的第一个项目,即索引0处的项目。
现在,窗口图标#1总是被突出显示而不是窗口图标#2的原因在以下代码行中:if(id = $(".w1"))
。
如果要将变量的值与另一个值进行比较,则必须使用&#34;等于&#34;运营商==
。单个=
是一个赋值运算符,当您想要为变量赋值时使用它。
将id = $(".w*")
的{{1}}替换为element == $(".w*")[0]
,并解决您的最小化问题。
注意:我已经从&#34; id&#34;更改了变量的名称。到&#34;元素&#34;为清楚起见,因为我们不再处理ID了。
注意#2:我们再次附加[0]因为获取与类匹配的元素也将返回元素列表。因为我们希望只有一个&#34; w1&#34;和一个&#34; w2&#34;,我们得到列表中的第一个元素。