jquery之replaceAll(),replaceWith()方法詳解

來源:互聯網
上載者:User

標籤:

一:replaceAll()

replaceAll()函數用於使用當前匹配元素替換掉所有的目標元素

該函數屬於jQuery對象(執行個體)。

文法

jQuery 1.2 新增該函數。

jQueryObject.replaceAll( target )
參數
參數 描述
target String/Element/jQuery/Array類型被替換的目標元素,這些元素將被當前匹配元素替換掉。

如果參數target為字串,則將其視作jQuery選取器。

傳回值

replaceAll()函數的傳回值為jQuery類型,返回表示替換內容的jQuery對象。

與被替換掉的節點關聯的所有資料和事件處理器也將同時被移除。

注意:如果當前jQuery對象匹配的某個元素是頁面上的元素,則該元素將從原來位置上消失,這相當於一個移動操作,而不是一個複製操作。

樣本&說明

replaceAll()函數用於使用當前匹配元素替換掉所有的目標元素:

<p>段落文本1<span></span></p>
<p>段落文本2<span></span></p>

<script type="text/javascript">
$(‘<em></em>‘).replaceAll( "p" );
// 其傳回值就是匹配替換內容(兩個‘<em></em>‘)的jQuery對象
</script>

<!--以下是jQuery代碼執行後的html內容-->
<em></em>
<em></em>

請注意replaceAll()和replaceWith()函數之間的區別:

var $A = $("s1");
var $B = $("s2");


// 將$B替換成$A
$A.replaceAll( $B ); // 返回表示替換內容的jQuery對象( 匹配替換掉$B的所有$A元素 )
// 將$A替換成$B
$A.replaceWith( $B ); // 返回$A

請參考下面這段HTML代碼(原HTML代碼):

<p id="n1">
    <span id="n2">foo</span>    
</p>
<p id="n3">
    <label id="n4">[label#n4]</label>
    <span id="n5">bar</span>
</p>
<div id="n6"></div>

以下jQuery範例程式碼,用於示範replaceAll()函數的具體用法:

// 用em元素替換掉所有的span元素
$(‘<em class="new">替代元素</em>‘).replaceAll( "span" );

// 用n4替換掉n6
// n4將從原位置上消失(替換到n6的位置)
$("#n4").replaceAll( $("#n6") );

運行代碼

以下是jQuery代碼執行後的html內容(格式未作任何調整):

<p id="n1">
    <em class="new">替代元素</em>    
</p>
<p id="n3">
   
    <em class="new">替代元素</em>
</p>
<label id="n4">[label#n4]</label>

二:replaceWith()

replaceWith()函數用於使用指定的元素替換每個匹配的元素


該函數屬於jQuery對象(執行個體)。

文法

jQuery 1.2 新增該函數。


jQueryObject.replaceWith( replacement )
參數

參數 描述
replacement String/Element/jQuery/Function類型用於替代的元素。

如果參數replacement為字串,則將其視作html字串。


jQuery 1.4 新增支援:參數replacement可以為函數。replaceWith()將根據匹配的所有元素遍曆執行該函數,函數中的this將指向對應的DOM元素。


replaceWith()還會為函數傳入兩個參數:第一個參數就是當前元素在匹配元素中的索引,第二個參數就是該元素當前的內部html內容(innerHTML)。函數的傳回值就是用於替換的內容(可以是html字串、DOM元素、jQuery對象)。

傳回值

replaceWith()函數的傳回值為jQuery類型,返回當前jQuery對象本身(雖然其匹配的元素已從文檔中被移除)。


與被替換掉的節點關聯的所有資料和事件處理器也將同時被移除。


注意:如果replacement元素是當前頁面中的元素,則該元素將從原位置上消失。這相當於一個移動操作,而不是一個複製操作。

樣本&說明

replaceWith()函數用於在每個匹配元素的所有內容外部包裹指定的元素:


<p>段落文本1<span></span></p>
<p>段落文本2<span></span></p>

<script type="text/javascript">
$("p").replaceWith( ‘<em></em>‘ );
</script>

<!--以下是jQuery代碼執行後的html內容-->
<em></em>
<em></em>

請注意replaceWith()和replaceAll()函數之間的區別:


var $A = $("s1");
var $B = $("s2");


// 將$A替換成$B
$A.replaceWith( $B ); // 返回$A
// 將$B替換成$A
$A.replaceAll( $B ); // 返回表示替換內容的jQuery對象( 匹配替換掉$B的所有$A元素 )

請參考下面這段HTML代碼(原HTML代碼):


<p id="n1">
    <span id="n2">foo</span>    
</p>
<p id="n3">
    <label id="n4">[label#n4]</label>
    <span id="n5">bar</span>
</p>
<div id="n6"></div>

以下jQuery範例程式碼,用於示範replaceWith()函數的具體用法:


// 將所有span元素替換為指定的em元素
$("span").replaceWith( ‘<em class="new">替代元素</em>‘ );

// 將n6替換為n4
// n4將從原位置上消失
$("#n6").replaceWith( $("#n4") );

// 將所有p元素替換為div元素
$("p").replaceWith( function(i, innerHTML){
    return ‘<div class="thread-‘ + (i + 1) + ‘">‘ + innerHTML + ‘</div>‘;      
} );

運行代碼


以下是jQuery代碼執行後的html內容(格式未作任何調整):


<div class="thread-1">
    <em class="new">替代元素</em>    
</div>
<div class="thread-2">
   
    <em class="new">替代元素</em>
</div>
<label id="n4">[label#n4]</label>


jquery之replaceAll(),replaceWith()方法詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.