3

我创建了一个独立的示例来找出为什么这只在 Firefox 中有效:

var ul = jQuery('<ul></ul>');

jQuery(selector).children().each(function() {
   var li = jQuery('<li></li>');
   var label = '<label for="' + this.id + '">' + this.name + '</label>';
   li.append(label);
   li.append(this);
   ul.append(li);
});

任何 webkit 浏览器甚至 IE 在此行都失败:

li.append(this);

这是一个 HTMLInputElement。有任何想法吗?

谢谢,皮特

4

2 回答 2

1

问题是,“this”是一个已经位于某个地方的 DOM 节点。您不能移动 DOM 节点,这些节点已经位于某个地方,而无需先删除或复制它们。

如果你想:

  • 移动它,你必须做

    li.append ($(this).remove())

  • 复制它,你会做

    li.append ($(this).clone (true))

实际上,我很困惑,它应该在 FF 中工作。如果是这样,那就是FF错误。

干杯,

于 2009-06-18T08:44:20.813 回答
0

这可能是您尝试从中选择子元素的元素的问题,或者您正在使用的 jQuery 版本的问题。

我正在使用 1.3.2 并使用您的代码(复制和粘贴)我可以在 FF 3、IE 8 和 Chrome 中成功运行它。

于 2009-06-17T21:40:24.813 回答