2015-09-10 66 views
5

這裏我有示例html,我想解開div中的所有段落標籤。目前的html看起來像這樣。打開div中的所有段落標籤jquery

<div class="divclass"> 
    Hi this is some text. 
    <p>testing test</p> 
    <p></p> 
    <p><a href="#" rel="nofollow">Testing text2</a></p> 
</div> 

但我想要這樣。

<div class="divclass"> 
    Hi this is some text. 
    testing test 
    <a href="#" rel="nofollow">Testing text2</a> 
</div> 

在此先感謝。

+1

http://stackoverflow.com/questions/17271884/jquery-unwrap-div-within-p –

+0

這也可以幫助https://api.jquery.com/unwrap/ –

回答

1

你需要解開p元素的內容:

$('div p').contents().unwrap(); 

但是你有p元素不具備的內容。這些標籤不會被代碼刪除。你需要找到姐弟倆P,然後將其刪除:

$('div p').contents().unwrap().siblings('p').remove(); 

Working Demo

+0

這隻適用於第一段標籤裏面div。 –

+0

@HassanRaza:檢查小提琴。它解開所有p元素並刪除空p元素 –

+1

好的答案。愛它:) –

0

試試這個,

// unwrap p tags having content; 
 
$('.divclass p').contents()// get content of all p tags 
 
       .unwrap() // unwrap p tags 
 
       .siblings('p:empty') // get all p siblings which are empty 
 
       .remove(); // and finaaly remove it
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="divclass"> 
 
    Hi this is some text. 
 
    <p>testing test</p> 
 
    <p></p> 
 
    <p><a href="#" rel="nofollow">Testing text2</a></p> 
 
</div>

+0

'

'不會被解開,因爲它沒有內容 –

+0

正確和我更新了我的答案,plz chk它。 –

+0

是仍然一個'

'不是沒有解決。 –

0

只需使用下面的代碼: -

$('p')。contents()。unwrap();

0

使用replaceWith()比使用unwrap()更節省成本。

它也適用於空標籤。

$(".divclass p").replaceWith(function() { return $(this).contents(); }); 

的jsfiddle:http://jsfiddle.net/2wyrou4t/

1

您可以使用JavaScript(比jQuery的更快,因爲它使用本地代碼):

http://jsfiddle.net/ks60L4h9/3/

var p = document.getElementsByTagName('p'); 

while(p.length) { 
    var parent = p[ 0 ].parentNode; 
    while(p[ 0 ].firstChild) { 
     parent.insertBefore( p[ 0 ].firstChild, p[ 0 ]); 
    } 
    parent.removeChild(p[ 0 ]); 
} 

這將選擇所有段落,然後使用。內容()以內容<p>爲目標,然後.unwrap()刪除其父母<p>個元素。