我一直在这个战斗了几个小时,但它回避我的理解......jQuery是否创建节点假货?
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
我们使用jQuery创建一个div元素,并将其附加到DOM元素。它进去,检查。对象打印为“HTMLDivElement”,检查。
然而,它失败了instanceof。此外,它应该有方法appendChild,但它的未定义。 (的确,如果我尝试打电话,它会报错。)
这里发生了什么?元素jQuery是为我们创建的,是假的?
'get()'返回一个数组,所以在你的情况下'div'是一个数组(它显然不是'HTMLDivElement',也没有'appendChild'方法)。请参阅:http://api.jquery.com/get/#get2。改为使用'.get(0)'。 –
如果你想看看控制台上有什么东西,使用'console.dir(whatever)'而不是'console.log()'。 – Pointy
或者更好,只需在代码中设置一个断点并直接检查该变量。 –