.html()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

.html()

分类:元素属性 | 操纵 > DOM内部插入

返回: String

.html()

描述:获得匹配的元素集合中第一个元素的HTML内容。

加入于: 1.0
.html()

该方法不接受任何参数

该方法在XML document中不可用。

在一个HTML document中,.html()可以用来获得一个元素的内容。如果选择器表达式匹配了不止一个元素,只会返回第一个匹配的元素的html。设想以下代码:

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

为了检索得后面的<div>内容,它必须是document中第一个带有class="demo-container"的div。

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

结果将如下所示:

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

该方法使用浏览器的innerHTML属性。有些浏览器可能不能返回一个原始文档中的HTML源的严格复制。举个例子,Internet Explorer有时候会丢失元素属性值周围的引号,如果它们只包含了字母数字的字符。

其它说明

  • 根据设计意图,任何接受一段HTML字符串的jQuery构造器或者jQuery方法——包括jQuery().append().after()等等——都会潜在地执行代码。这可能发生脚本标签注入,或者使用HTML的元素属性执行代码(例如,<img onload="">。)千万不要用这些方法来插入从不可信任的来源获得的字符串,比如说URL查询参数、cookies,或者表单输入。这样做还可能引入跨站脚本(XSS)漏洞。在往document添加内容之前要删除或转义一切的用户输入。

示例

点击一个段落文本,把它从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-1.10.2.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>

演示结果

返回: jQuery

.html()

描述:针对每个匹配的元素设置HTML内容。

加入于: 1.0
.html( htmlString )
  • htmlString
    类型:htmlString
    一个字符串,被设置为每个匹配的元素的内容。
加入于: 1.4
.html( function )
  • function
    类型:FunctionInteger index, htmlString oldhtml ) => htmlString
    一个函数,返回要设置的内容。检索集合中元素的索引位置以及旧HTML值作为参数。在调用该函数之前,jQuery会清空该元素;使用oldhtml参数以引用以前的内容。在这个函数内部,this引用了集合中的当前元素。

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

.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>";
});

给定一个带有六个段落文本的document,示例会把<div class="demo-container">的html设置成<p>All new content for <em>6 paragraphs!</em></p>

该方法使用浏览器的innerHTML属性。有些浏览器可能不能严格复制提供的html源,生成DOM。举个例子,Internet Explorer 8及以前的版本会把所有的链接上的href属性转换成绝对的URL,而且Internet Explorer 9及以前的版本如果不附加独立的兼容性层,就不能正确地处理HTML 5元素。

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

注意:在Internet Explorer 9以及后的版本,设置一个HTML元素的文本内容,可能破坏它的子元素的文本节点,操作结果是从document中删除了它的子元素。如果你要保持对这些DOM元素的引用,并需要它们不变,请使用.empty().html( string )来代替.html(string),因此这些在新字符串分配到元素之前,会从document中删除这些子元素。

示例

向每个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-1.10.2.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>

演示结果

把一些html添加到每个div上,然后立即对插入的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-1.10.2.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>

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/html.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。