2015-04-17 52 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

它仍然不工作,現在窗口圖標不會突出顯示! –

相關問題