为什么这只适用于Firefox?

时间:2009-06-17 21:30:43

标签: jquery firefox webkit

我已经创建了一个自包含的示例,以找出为什么它只适用于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。有什么想法吗?

谢谢, 皮特

2 个答案:

答案 0 :(得分:1)

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

如果你想:

  • 移动它,你必须这样做

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

  • 复制它,你会做

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

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

干杯,

答案 1 :(得分:0)

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

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