2012-04-20 81 views
0
element.appendTo('<td>').appendTo('<tr>').appendTo('#ordersList') 

這是否應該把元素放入一個新的td元素中,在#ordersList元素(是一個表格)內部的一個新的tr元素中?.appendTo和HTML literals

因爲我剛剛在#ordersList裏面沒有包裝tr/td的裸體元素。

我試圖排查故障的舊網站似乎是使用jQuery 1.4.1--以防這是已知的錯誤。

+1

看起來它打算這麼做;我會很感興趣,看看它是否真的做了什麼(在我的嘗試中)。看起來像'$(').append($('').append(element))。appendTo('#ordersList')'會更具人性化和功能性。 – Kato 2012-04-20 16:39:14

+0

@Kato我最終刪除了這張表並開始了我的生活,但試圖理解爲什麼這個代碼被渲染(瀏覽器在表格中的垃圾寬恕)以及原始編碼者的意圖是什麼。 – 2012-04-20 16:46:29

+0

我也是;我正在吞噬答案,在我搗鼓的時候沒有完成任何工作。我認爲這是寫它的人和我們之間的區別;我們想知道是什麼讓它變得脆弱。他們表面上甚至不想知道他們寫的是否會運行! ;) – Kato 2012-04-20 17:06:05

回答

3

appendTo()返回您正在操作的元素,那麼you're actually doing是什麼;

  1. 將您的元素添加到新創建的td
  2. td中分離元素並將其添加到新創建的tr
  3. tr卸下,並將其連接到#ordersList

什麼工作會是這樣的;

$('<td></td>').appendTo($('<tr></tr>')​​​​​​​​​.appendTo('#ordersList')).append(element); 

...爲了可讀性而吮吸。

+0

我現在明白了。把它清理乾淨,然後不用外表。 – 2012-04-20 16:51:30

1

您可以隨時使用這樣簡單的事情,本機API,雖然節省代碼幫手是好的...

function create(type) { return document.createElement(type); } 
function byId(id) { return document.getElementById(id); } 

byId('ordersList') 
    .appendChild(create('tr')) 
    .appendChild(create('td')) 
    .appendChild(element); 

原生.appendChild()返回附加的元素,所以您可以將調用鏈接到嵌套元素。