append 和 appendChild 是否被覆盖?

Is append and appendChild getting overwritten?

我正在使用 jspmBundleSFX.

在我的一个目录中的一个 index.html 中,当我在控制台中键入 $("#sfsdfasfsdaf").append 时。

我得到 function(){return x(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=s(this,a);b.appendChild(a)}})} Chrome 说它属于 main.js 这是捆绑和丑化的 js。

$("#sfsdfasfsdaf")根本不存在,发生了什么?

对于存在的 ID 也会发生这种情况 $("#canvas").append 我得到相同的结果。 appendChild 然而 returns undefined

在另一个目录的另一个 index.html 中,一切正常。我不知道如何解决这个问题。 index.html 都包含 main.js 丑化文件。

编辑: 我用 document.getElementById('canvas'); 替换了 $("#canvas"); 现在工作正常。但是我仍然不知道为什么会出现这个问题。某些脚本是否覆盖或与 jQuery 冲突?

您正在创建一个 jQuery 对象。它可能是一个空的 jQuery 对象(如果元素不存在,或者更准确地说,如果没有元素匹配选择器)但它仍然是一个 jQuery 对象。

因此,它仍然具有所有 jQuery 方法,例如 .append。如果你调用它,它不会做任何事情。

Vanilla JavaScript,但是,如果元素不存在,则给出 null(例如,document.getElementById('herpaderp') 将是 null),并且 null没有元素应有的方法,例如 appendChild.

我个人认为这总体上是一件好事 - 如果我说我想要一个元素但它不存在,很可能存在更大的问题并且应该抛出错误,但 jQuery 会继续一路顺风

$("#sfsdfasfsdaf") Does not even exist, what is hapenning

原因是 $(selector) 总是 return 一个 jQuery 对象,无论是否存在匹配元素。该对象将始终包含一个 属性 append 这是一个函数。没有 jQuery 方法 appendChild 这就是你看到未定义的原因。

除此之外,您根本不清楚您要做什么或遇到什么更高级别的问题