Javascript jQuery创建的节点是伪造的吗?
我已经和这个争论了好几个小时,但它还是让我无法理解Javascript jQuery创建的节点是伪造的吗?,javascript,jquery,dom,Javascript,Jquery,Dom,我已经和这个争论了好几个小时,但它还是让我无法理解 var newLabel = $('<div></div>'); newLabel.appendTo("#f0"); console.log($("#f0").html()); // <br><div></div> console.log(newLabel); // [object Object] var div = newLabel.first().ge
var newLabel = $('<div></div>');
newLabel.appendTo("#f0");
console.log($("#f0").html()); // <br><div></div>
console.log(newLabel); // [object Object]
var div = newLabel.first().get();
console.log(div); // [object HTMLDivElement]
if( div instanceof HTMLDivElement ) { console.log("VALID"); } //
else { console.log("INVALID"); } // INVALID
console.log(div.appendChild); // undefined
var newLabel=$('');
新标签。附于(“#f0”);
console.log($(“#f0”).html());//
console.log(newLabel);//[对象]
var div=newLabel.first().get();
console.log(div);//[对象HtmlLevel]
if(htmldevelment的div instanceof){console.log(“VALID”);}//
else{console.log(“无效”);}//无效
console.log(div.appendChild);//未定义
我们使用jQuery创建一个div元素,并将其附加到DOM元素。它进去了,检查一下。对象打印为“HtmlDevice”,请选中
不过。它使实例失败。此外,它应该有appendChild方法,但其未定义。(事实上,如果我尝试调用它,它会抛出一个错误。)
这里到底发生了什么事?jQuery为我们创建的元素是假的吗?
get()
返回一个数组,因此在您的例子中,div
是一个数组(它显然不是htmldevelment
也没有方法appendChild
)。请参阅:。如果您使用.get(0)
(或者只是[0]
),您将得到实际的div
元素。get()
返回一个数组,因此div
在您的例子中是一个数组(显然它不是htmldevelment
也没有方法appendChild
)。请参阅:。请尝试使用.get(0)
。如果要查看控制台上的内容,请使用console.dir(无论什么)
而不是console.log()
。或者更好,只需在代码中设置一个断点,并直接检查变量。@FelixKling:将答案作为注释发布的问题是OP不能接受它们。@GolDDranks:t.J.Crowder所说的。此外,console.log
可以更智能地打印额外的信息(比如值是一个数组)。(这只是Felix Kling的评论——加上最微小的一点——以CW[无代表生成]的形式发布,到时候OP可以接受。)