首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.html()和.contents()的区别

使用.html()和.contents()的区别
EN

Stack Overflow用户
提问于 2012-02-11 01:01:00
回答 2查看 7.8K关注 0票数 16

使用这两个jQuery片段有什么区别?

代码语言:javascript
复制
.append( $(this).contents() );
// and
.append( $(this).html() );
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-11 01:03:10

.contents()返回元素,从而移动它们。http://api.jquery.com/contents/

.html()返回一个字符串,从而复制元素。http://api.jquery.com/html/

票数 23
EN

Stack Overflow用户

发布于 2012-02-11 01:03:33

是的,它们是完全不同的

  • .contents()为您提供了一个包含所有HTML子DOM节点的jQuery对象。element.
  • .html()的为提供了一个从元素的后代节点呈现的字符串。

因此,当您对contents()执行.append()操作时,会将节点重新定位到一个新位置。

当您对.html()执行.append()操作时,将从HTML字符串生成新的节点。

请记住,在客户端,没有超文本标记语言。你只有DOM。

考虑到..。

现在我们分析所有的子代DOM节点,并创建一个超文本标记语言字符串( returned.

  • ...when
  • ...when you do .html() ),超文本标记语言字符串本身不会被添加到DOM中,而是会被解析,并生成新的DOM节点,然后将其添加到DOM中。

根据关于剪切和复制的评论,听起来好像您仍然认为您正在处理从服务器发送的原始HTML字符串。

你不是。

您正在使用相互嵌套的JavaScript对象(好吧,宿主对象),以形成对象(父对象、子对象、孙子对象等)的层次结构。您可以将该层次结构的某个部分重新定位到该层次结构中的另一个位置。

这种元素层次结构称为DOM,或文档对象模型。

不幸的是,由于jQuery的.append()接受HTML字符串,因此增加了您实际上是在处理HTML标记而不是对象的错觉。

所以我再说一遍...

  • .html() 生成一个新的超文本标记语言字符串。当您将字符串提供给.append()时,它将根据该字符串简单地创建新节点,然后 them.
  • .contents() 选择现有节点并插入它们。由于一个节点不能同时位于两个位置,因此节点将被重新定位到DOM中要追加它们的位置。
票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9231663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档