使用jQuery来回显文本

sus*_*its 11 javascript jquery

是否可以使用jQuery来代替脚本标记来回显文本?更准确地说,有没有办法实现

<script type="text/javascript">
    document.write("foo");
</script>
Run Code Online (Sandbox Code Playgroud)

......没有使用document.writedocument.write阅读本文后,我对使用感到不满意.

我知道我可以选择这样做:

<span id="container"></span>
<script type="text/javascript">
    $("#container").text("foo");
</script>
Run Code Online (Sandbox Code Playgroud)

但是,我很想知道是否有一种方法可以在不使用容器元素的情况下完成,最好使用jQuery.

提前致谢!

Mic*_*ren 6

如果你想出一个jQuery方法document.write(),那么出于同样的原因它会很糟糕.

你最好只使用document.write()你需要的东西,或者更好的是,操纵一个现有元素或在DOM中的某个地方附加一个新元素 - 这就是jQuery所擅长的.


bme*_*eck 1

是的,也不是。对于你想要的,不。

  1. 您可以让它在没有真正容器的情况下将文本回显给某些内容吗?是的(请参阅:DocumentFragment)。

  2. 它会出现在您的文档中吗...不。这是因为还没有告诉它应该放置在哪里。html 中的脚本标签不会直接保持其作为参数的位置,因此您可以四处寻找最后一个标签并将 TextNode 放在那里,但是,这可能很困难且存在错误。

您可以做的是一般做法,即在发生诸如“document.body.onLoad”之类的事件之前不要修改 dom。这是一种常见的做法,通常是 ajax 的最佳选择。

如果这些都不适合您,请使用罕见的 insertBefore(),jquery 在带有 id 的脚本元素上提供与 .after 和 .before 类似的支持。

<script id="flail">
var flail=document.getElementById("flail");
flail.parentNode.insertBefore(document.createTextNode("TEST"),flail)
</script>
Run Code Online (Sandbox Code Playgroud)

注意:这通常是一个不好的做法,因为它可能会产生悬挂负载,并且如果没有此输出,就会导致 html 页面不连贯。然而,就像所有的事情一样,它也有使用的情况。