2012-04-20 73 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()返回附加的元素,所以您可以将调用链接到嵌套元素。