2015-04-17 130 views
0

我碰巧在最近搞乱了JQuery,而且我决定做一些类似win xp的东西,在那里你可以拥有windows,你可以:最小化,关闭和最大化。当最小化时,窗口应该在任务栏中被标记为最小化。windows xp像web应用程序无法正常工作

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

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

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

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

对不起,我不能做得更好,我只是不知道问题出在哪里。

+0

嗨!在你的浏览器中打开开发工具,在第73行放置一个断点(用“JS”窗格测量),看看'id'是什么,'$(this).parents('。window')'是什么(提示:不是标量)。除此之外,由于外部网站可能在没有任何控制权的情况下发生变化或消失,将代码的相关部分移到问题中将有助于我们将知识保留在此处,甚至在将来也可以使用。谢谢! :) – Cornelius

+1

删除那些w1 w2变量。看看[.clone()](https://api.jquery.com/clone/) –

+0

@gerdi这看起来很有趣,但我仍然不明白我该如何使用它。对不起,我是JQuery的初学者。 –

回答

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代码中,您已将“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”,我们得到在列表中的第一个元素。

+0

刚刚注意到我自己的代码有几个问题。给我一点时间,我解决这个问题。 – Cubia

+0

现在应该很好。 – Cubia

+0

它仍然不工作,现在窗口图标不会突出显示! –

相关问题