當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JQuery .replaceWith()用法及代碼示例


用法
.replaceWith( newContent ) => jQuery

說明:用提供的新內容替換匹配元素集中的每個元素,並返回被移除的元素集。

  • 添加的版本:1.2.replaceWith( newContent )

    • newContent
      類型:htmlStringElementArrayjQuery
      要插入的內容。可以是 HTML 字符串、DOM 元素、DOM 元素數組或 jQuery 對象。
  • 添加的版本:1.4.replaceWith( function )

    • function
      類型:Function ()
      一個函數,它返回用於替換匹配元素集的內容。

.replaceWith() 方法通過一次調用從 DOM 中刪除內容並在其位置插入新內容。考慮這個 DOM 結構:

<div class="container">
  <div class="inner first">Hello</div>
  <div class="inner second">And</div>
  <div class="inner third">Goodbye</div>
</div>

第二個內部 <div> 可以替換為指定的 HTML:

$( "div.second" ).replaceWith( "<h2>New heading</h2>" );

這導致結構:

<div class="container">
  <div class="inner first">Hello</div>
  <h2>New heading</h2>
  <div class="inner third">Goodbye</div>
</div>

All 內部 <div> 元素可以立即成為目標:

$( "div.inner" ).replaceWith( "<h2>New heading</h2>" );

這會導致所有這些都被替換:

<div class="container">
  <h2>New heading</h2>
  <h2>New heading</h2>
  <h2>New heading</h2>
</div>

也可以選擇一個元素作為替換:

$( "div.third" ).replaceWith( $( ".first" ) );

這導致了 DOM 結構:

<div class="container">
  <div class="inner second">And</div>
  <div class="inner first">Hello</div>
</div>

此示例演示了選定元素通過從其舊位置移動而不是通過克隆來替換目標。

.replaceWith() 方法與大多數 jQuery 方法一樣,返回 jQuery 對象,以便其他方法可以鏈接到它。但是,必須注意返回的是original jQuery 對象。此對象指的是已從 DOM 中刪除的元素,而不是替換它的新元素。

其他注意事項:

  • .replaceWith() 方法刪除與已刪除節點關聯的所有數據和事件處理程序。
  • 在 jQuery 1.9 之前,如果集合中的第一個節點未連接到文檔,.replaceWith() 將嘗試在當前 jQuery 集合中添加或更改節點,並且在這些情況下返回一個新的 jQuery 集合而不是原始集合。該方法可能會或可能不會返回新結果,具體取決於其參數的數量或連接性!從 jQuery 1.9 開始,.after().before().replaceWith() 總是返回原始的未修改集。嘗試在沒有父節點的節點上使用這些方法沒有任何效果——也就是說,集合和它包含的節點都不會改變。

例子:

單擊時,將按鈕替換為包含相同單詞的 div。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>replaceWith demo</title>
  <style>
  button {
    display: block;
    margin: 3px;
    color: red;
    width: 200px;
  }
  div {
    color: red;
    border: 2px solid blue;
    width: 200px;
    margin: 3px;
    text-align: center;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<button>First</button>
<button>Second</button>
<button>Third</button>
 
<script>
$( "button" ).click(function() {
  $( this ).replaceWith( "<div>" + $( this ).text() + "</div>" );
});
</script>
 
</body>
</html>

演示:

用粗體字替換所有段落。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>replaceWith demo</title>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>cruel</p>
<p>World</p>
 
<script>
$( "p" ).replaceWith( "<b>Paragraph. </b>" );
</script>
 
</body>
</html>

演示:

單擊時,將每個段落替換為已在 DOM 中並使用 $() 函數選擇的 div。請注意,它不會克隆對象,而是將其移動以替換段落。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>replaceWith demo</title>
  <style>
  div {
    border: 2px solid blue;
    color: red;
    margin: 3px;
  }
  p {
    border: 2px solid red;
    color: blue;
    margin: 3px;
    cursor: pointer;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
  <p>Hello</p>
  <p>cruel</p>
  <p>World</p>
  <div>Replaced!</div>
 
<script>
$( "p" ).click(function() {
  $( this ).replaceWith( $( "div" ) );
});
</script>
 
</body>
</html>

演示:

單擊按鈕時,將包含的 div 替換為其子 div,並將所選元素的類名附加到段落中。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>replaceWith demo</title>
  <style>
  .container {
    background-color: #991;
  }
  .inner {
    color: #911;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>
  <button>Replace!</button>
</p>
<div class="container">
  <div class="inner">Scooby</div>
  <div class="inner">Dooby</div>
  <div class="inner">Doo</div>
</div>
 
<script>
$( "button" ).on( "click", function() {
  var $container = $( "div.container" ).replaceWith(function() {
    return $( this ).contents();
  });
 
  $( "p" ).append( $container.attr( "class" ) );
});
</script>
 
</body>
</html>

演示:

相關用法


注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 .replaceWith()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。