2013-02-07 28 views
0

請在下面的3行代碼中解釋var(以及使用)var的情況,而不是絆倒它(我的理解有限)。Javascript和jQuery的變量

<script type="text/javascript"> 
    var head = $("thead#tHead1").clone().removeAttr("class"); 
    $(head).find("#hRow2").remove(); 
    head = $(head).wrap("<thead>").parent().html(); 

編輯 什麼是對的代碼二號線使用$(head),一號設置head =,然後到另一個值賦給頭後有什麼意義?

查看我所瞭解的答案。

+0

是的。它將引用第二行中克隆的頭元素。第三行中的'$(head)'相同。 – nhahtdh

+0

@nhahtdh請檢查編輯。 '使用'問題不清楚。 – David

+1

請先嚐試http://docs.jquery.com/。此外,在第二行中再次將頭部包裝在$()中是不必要的,並且顯示寫這個的人不知道他們在做什麼 –

回答

2
// Find an element, make a copy of it, and remove it's class 
var head = $("thead#tHead1").clone().removeAttr("class"); 

// Within the cloned element (not on the DOM yet), 
// Find an element within and then remove that found element. 
$(head).find("#hRow2").remove(); 

// Wrap the cloned element in another element, giving it a parent. 
// Traverse to that parent and return it's html content 
head = $(head).wrap("<thead>").parent().html(); 

注意這裏不需要$(head)。這可以簡單地變成head。您不需要將元素轉換爲jQuery包裝的對象,因爲它應該已經是一個了。


此外,這是可怕的代碼。這是DOM上的一件詭計,可以做任何事情。另外,您應該使用某種模板引擎根據某些輸入數據根據需要生成新的DOM片段。

+0

很好的答案。這就是我一直在尋找的。 – David

+0

亞歷克斯,你會發現底部的2行代碼(編輯)作爲一個正確的方式來寫他們? – David

+0

這會稍微改善代碼,是的。但說實話,我認爲應該退後一步,重新評估這裏的做法。但這是一個完全不同的問題。 –

1

我將帶您看行:

  1. 一開口<script>標籤,它的方式並不需要type屬性。

  2. 找到<thead>元素與tHead1一個id,複製包括子節點的元素,並從新元素中刪除class屬性,然後將新的元素賦值給一個變量head

  3. 刪除ID爲hRow2的元素位於我們之前創建的元素中。

  4. 將我們前面創建的元素換成thead元素,並重新指定head變量等於該元素的innerHTML。

0

從意見和進一步的研究中,我得知這可能是更好的寫法如下:

var head = $("#tHead1").clone().removeAttr("class"); // clean & clone the head 
head.find("#hRow2").remove();       // remove 2nd row 
head = head[0].outerHTML;        // get 'only' the desired html 

要回答我的問題,(我不知道的術語)的最後head =在這種情況下是必要的,不要顯示[object Object]。代替一個對象,它會分配所需的HTML(標題行),以便稍後在代碼中使用。 console.log(head)透露了這一課。我也不確定爲什麼第1行和第2行不能鏈接,所以這是乾淨的,因爲我可以做到。

此練習的更高目的是在打印之前將大表拆分爲單獨的(45行)表格,在後續頁面上只有2個標題行可見,並且不會與服務器聯繫或重新加載頁面。我的方法是在第n行添加一個頁尾類,完成上述操作,然後在該行後添加新的表&頭。