当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .html()用法及代码示例


获取匹配元素集中第一个元素的 HTML 内容或设置每个匹配元素的 HTML 内容。

用法一

.html() => String

说明:获取匹配元素集中第一个元素的 HTML 内容。

  • 添加的版本:1.0.html()

    • 此方法不接受任何参数。

此方法不适用于 XML 文档。

在 HTML 文档中,.html() 可用于获取任何元素的内容。如果选择器表达式匹配多个元素,则只有第一个匹配项才会返回其 HTML 内容。考虑这段代码:

$( "div.demo-container" ).html();

为了检索以下 <div> 的内容,它必须是文档中第一个带有 class="demo-container" 的内容:

<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>

结果将如下所示:

<div class="demo-box">Demonstration Box</div>

此方法使用浏览器的innerHTML 属性。某些浏览器可能不会返回与原始文档中的 HTML 源完全相同的 HTML。例如,如果属性值仅包含字母数字字符,Internet Explorer 有时会省略属性值的引号。

其他注意事项:

  • 根据设计,任何接受 HTML 字符串的 jQuery 构造函数或方法(jQuery().append().after() 等)都可能执行代码。这可以通过注入脚本标签或使用执行代码的 HTML 属性(例如,<img onload="">)来实现。不要使用这些方法插入从 URL 查询参数、cookie 或表单输入等不受信任的来源获得的字符串。这样做会引入cross-site-scripting (XSS) 漏洞。在向文档添加内容之前删除或转义任何用户输入。

例子:

单击段落可将其从 html 转换为文本。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
  <style>
  p {
    margin: 8px;
    font-size: 20px;
    color: blue;
    cursor: pointer;
  }
  b {
    text-decoration: underline;
  }
  button {
    cursor: pointer;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>
  <b>Click</b> to change the <span id="tag">html</span>
</p>
<p>
  to a <span id="text">text</span> node.
</p>
<p>
  This <button name="nada">button</button> does nothing.
</p>
 
<script>
$( "p" ).click(function() {
  var htmlString = $( this ).html();
  $( this ).text( htmlString );
});
</script>
 
</body>
</html>

演示:

用法二

.html( htmlString ) => jQuery

说明:设置匹配元素集中每个元素的 HTML 内容。

  • 添加的版本:1.0.html( htmlString )

    • htmlString
      类型:htmlString
      要设置为每个匹配元素的内容的 HTML 字符串。
  • 添加的版本:1.4.html( function )

    • function
      类型:Function(Integer 索引,htmlString oldhtml)=> htmlString
      返回要设置的 HTML 内容的函数。接收集合中元素的索引位置和旧的 HTML 值作为参数。 jQuery 在调用函数之前清空元素;使用 oldhtml 参数来引用以前的内容。在函数中,this 指的是集合中的当前元素。

.html() 方法在 XML 文档中不可用。

.html() 用于设置元素的内容时,该元素中的任何内容都会被新内容完全替换。此外,jQuery 在将这些元素替换为新内容之前,会从子元素中删除其他结构,例如数据和事件处理程序。

考虑以下 HTML:

<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>

<div class="demo-container">的内容可以这样设置:

$( "div.demo-container" )
  .html( "<p>All new content. <em>You bet!</em></p>" );

该行代码将替换 <div class="demo-container"> 中的所有内容:

<div class="demo-container">
  <p>All new content. <em>You bet!</em></p>
</div>

从 jQuery 1.4 开始,.html() 方法允许通过传入一个函数来设置 HTML 内容。

$( "div.demo-container" ).html(function() {
  var emphasis = "<em>" + $( "p" ).length + " paragraphs!</em>";
  return "<p>All new content for " + emphasis + "</p>";
});

给定一个包含六个段落的文档,此示例会将 <div class="demo-container"> 的 HTML 设置为 <p>All new content for <em>6 paragraphs!</em></p>

此方法使用浏览器的innerHTML 属性。某些浏览器可能无法生成完全复制所提供的 HTML 源的 DOM。例如,版本 8 之前的 Internet Explorer 会将链接上的所有 href 属性转换为绝对 URL,并且版本 9 之前的 Internet Explorer 在不添加单独的 compatibility layer 的情况下将无法正确处理 HTML5 元素。

要设置不包含 HTML 的 <script> 元素的内容,请使用 .text() 方法而不是 .html()

注意:在 Internet Explorer 9 及以下版本中,设置 HTML 元素的文本内容可能会损坏其子元素的文本节点,这些子节点会因操作而从文档中删除。如果您保留对这些 DOM 元素的引用并且需要它们保持不变,请使用.empty().html( string )代替.html(string)以便在将新字符串分配给元素之前从文档中删除元素。

例子:

向每个 div 添加一些 html。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
  <style>
  .red {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<span>Hello</span>
<div></div>
<div></div>
<div></div>
 
<script>
$( "div" ).html( "<span class='red'>Hello <b>Again</b></span>" );
</script>
 
</body>
</html>

演示:

向每个 div 添加一些 html,然后立即对插入的 html 进行进一步操作。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
  <style>
  div {
    color: blue;
    font-size: 18px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<div></div>
<div></div>
<div></div>
 
<script>
$( "div" ).html( "<b>Wow!</b> Such excitement..." );
$( "div b" )
  .append( document.createTextNode( "!!!" ) )
  .css( "color", "red" );
</script>
 
</body>
</html>

演示:

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .html()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。