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