【问题标题】:Reading HTML with out adding to DOM in Jquery在 Jquery 中不添加到 DOM 的情况下读取 HTML
【发布时间】:2018-06-04 02:37:02
【问题描述】:

在阅读的时候碰巧看到了这段代码。 ajax 调用的响应是这样的纯 html:

<div id="connectionId">123444</div>

令我惊讶的是,他们能够像这样检索值:

$('<div id="connectionId">123444</div>').text() // output 123444

我的印象是 jQuery 只有在添加到 DOM 时才能读取这些值。

有人可以分享一些关于这种行为的信息吗?我在这里理解错了什么?

注意:它没有在 DOM 中创建 div 元素。

【问题讨论】:

  • $('&lt;div id = "connectionId"&gt;123444&lt;/div&gt;') 创建一个jquery DOM 元素,id 为connectionId,包含123444 的文本。 DOM 元素存在并在内存中,只是没有附加到页面的 DOM。 jQuery 可以毫无问题地读取/操作任何包装的 DOM 元素,无论它是否是页面 DOM 的一部分。
  • 你能再解释一下吗?
  • jQuery 基本上使用文档片段(我认为)创建了一个新的 jQuery 对象,因此无需将它们添加到 DOM 中即可工作。
  • 所以@Andy 使用 document.createDocumentFragment() 来管理??

标签: javascript jquery html dom


【解决方案1】:

不需要在 DOM 上有元素。

通过简单地调用这个$("&lt;div class="connectionId"&gt;123444&lt;/div&gt;").html(),你会得到123444,但是如果你将html元素包装到一个父元素中,比如$("&lt;div&gt;&lt;div class="connectionId"&gt;123444&lt;/div&gt;&lt;/div&gt;").html(),输出将是&lt;div class="connectionId"&gt;123444&lt;/div&gt;

您还可以使用find 函数获取您想要的元素。 https://jsfiddle.net/4vamrve7/1/

【讨论】:

  • 不是我要找的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多