Windows XP像Web应用程序不能正常工作

时间:2015-04-17 23:02:34

标签: jquery

我最近碰巧搞乱了JQuery,我决定制作类似win xp的东西,你可以使用windows:最小化,关闭和最大化。当最小化时,窗口应在任务栏中标记为最小化。

我的代码:http://codepen.io/julian-a-avar/pen/xbaRJz

但是你看,我碰巧在我的代码中发现了以下问题:

  • 在窗口中单击时,窗口不会增加z-index
  • 当点击第二个窗口的最小化按钮时,窗口1 被标记为最小化而不是窗口2
  • 我在制作最大化按钮方面遇到了很多麻烦,这些部分是可选的,但如果你能告诉我到底是怎么做的话,它会有很大的帮助

代码碰巧对我的大脑来说太复杂了,我无法确定问题究竟在哪里。我所知道的是,问题出在line 42line 124之间。你可以看到它的范围很广。

抱歉,我无法做得更好,我只是不知道问题出在哪里。

1 个答案:

答案 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;,我们得到列表中的第一个元素。