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


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

用法
.insertAfter( target ) => jQuery

说明:在目标之后插入匹配元素集中的每个元素。

  • 添加的版本:1.0.insertAfter( target )

    • target
      类型:SelectorhtmlStringElementArrayjQuery
      选择器、元素、元素数组、HTML 字符串或 jQuery 对象;匹配的元素集将插入到此参数指定的元素之后。

.after().insertAfter() 方法执行相同的任务。主要区别在于语法——特别是内容和目标的位置。对于 .after() ,方法前面的选择器表达式是插入内容的容器。另一方面,对于 .insertAfter() ,内容在方法之前,作为选择器表达式或作为动态创建的标记,它被插入到目标容器之后。

考虑以下 HTML:

<div class="container">
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>

我们可以创建内容并一次将其插入到多个元素之后:

$( "<p>Test</p>" ).insertAfter( ".inner" );

每个内部 <div> 元素都会获得以下新内容:

<div class="container">
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <p>Test</p>
  <div class="inner">Goodbye</div>
  <p>Test</p>
</div>

我们还可以选择页面上的一个元素,然后一个接一个地插入:

$( "h2" ).insertAfter( $( ".container" ) );

如果以这种方式选择的元素被插入到 DOM 中其他位置的单个位置,它将在目标之后移动(未克隆)并返回由插入元素组成的新集合:

<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>
<h2>Greetings</h2>

但是,如果有多个目标元素,则会在第一个目标之后为每个目标创建插入元素的克隆副本,并返回新集合(原始元素加上克隆)。

在 jQuery 1.9 之前,append-to-single-element case 没有创建新的集合,而是返回了原来的集合,这使得很难使用.end()当与未知数量的元素一起使用时,该方法可靠。

其他注意事项:

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

例子:

在 ID 为 "foo" 的元素之后插入所有段落。与 $( "#foo" ).after( "p" ) 相同

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>insertAfter demo</title>
  <style>
  #foo {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p> is what I said... </p>
<div id="foo">FOO!</div>
 
<script>
$( "p" ).insertAfter( "#foo" );
</script>
 
</body>
</html>

演示:

相关用法


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