jQuery多次追加一个Object

我不确定这里究竟发生了什么,我认为变量是一个jquery对象。

这只追加一次,我的问题是为什么?

var newInput = $(''); $('#newDiv').append(newInput); $('#newDiv').append(newInput); 

虽然这可行,但我认为

 var newInput = ''; $('#newDiv').append(newInput); $('#newDiv').append(newInput); 

谢谢您的帮助!

当你执行$('') ,jQuery会为你创建一个input DOM元素。

当你.append()一个DOM元素时,它会将元素与之前的位置分离。 (见小提琴) 。 来自文档 :

如果以这种方式选择的元素被插入到DOM中其他位置的单个位置,则它将被移动到目标中(未克隆)。

因此,您的第二个.append()调用将从首先附加它的位置将其删除并将其放在新位置。

附加字符串时,DOM元素会在追加时创建。

在第一种情况下, $将解析您的html并创建一个新的jQuery对象,它将包装HTMLInputElement

基本上,它就像做:

 var $newDiv = $('#newDiv'), newInput = document.createElement('input'); $newDiv.append(newInput); $newDiv.append(newInput); 

在第二种情况下,它每次都在解析html,为每个实例生成一个不同的jQuery对象。

以下是第一个样本的修复方法:

 var newInput = $(''); $('#newDiv').append(newInput); $('#newDiv').append(newInput.clone()); 

这是因为在第一种情况下,它引用相同的元素对象 (附加相同的元素,因此它附加到新的位置),在第二种情况下,您将html附加为字符串,因此它附加多个元素(每次都是新元素)。