2012-02-06 56 views
4

是否有可能通過jQuery刪除頁面上的所有DIV - 保持其內容完好無損 - 對此有何模式?jQuery - 根據類名刪除DIV

<div class="ExternalClass85AC900AB26A481DBDC8ADAE7A02F039">....</div> 

注意的DIV遵循此模式:

  • 類的名字將永遠開始ExternalClass但隨後將另一價值,絕不相同,

  • 和DIV有沒有其他的屬性,但class。 (這是在SharePoint上)

謝謝。

+0

請注意,DIV應該有** **只有類屬性並沒有其他屬性。提供的解決方案都很棒,但有人可以爲此問題提供補充嗎? – Alex 2012-02-06 17:53:59

+1

讓我大笑,這是我搜索的第一個結果,儘管我的搜索或您的OP都沒有提及它,但我完全知道我們可能因爲SharePoint而出現此問題? +1爲好問題。 – 2013-01-23 12:06:39

+1

編輯:第一次沒有注意到你的'這是在SharePoint'。 – 2013-01-23 12:07:36

回答

4

是的,你可以使用attribute starts with selectorreplaceWith方法:

$('[class^="ExternalClass"]').filter(function() { 
    return this.attributes.length === 1; 
}). replaceWith(function() { 
    return $(this).html(); 
}); 
+0

無需使用額外的'self'變量 – dfsq 2012-02-06 16:31:54

+0

@dfsq好點,在前世是爲了避免再次創建一個jQuery對象是有用的,但因爲'replaceWith'適用於所有匹配元素的'each'電話是不必要的。 – 2012-02-06 16:39:35

+0

所有這些答案的一個問題:我需要刪除只有**類的DIV,並且沒有其他屬性。 – Alex 2012-02-06 17:46:22

1

從div中獲取內部html。 獲取父代或以前的代碼,將內容粘貼到或刪除div後。 Jquery可能有一個替換函數,不確定,這會更容易。

應該能夠使用.remove()來擺脫div。

$(「[class $ ='ExternalClass']」)。remove();
可能是id * =我忘記了哪一個。

修訂: http://api.jquery.com/replaceWith/

+0

http://api.jquery.com/replaceWith/ – 2012-02-06 16:07:30

+0

他們有上面的功能,只是找到它,看起來像它會工作。 – 2012-02-06 16:08:15

+0

選擇一個ID,而不是一個班級。 – 2012-02-06 16:08:28

1

你需要重新編寫HTML。

$("div [class^=ExternalClass]")將選擇元素。

抓住innerHTML,將它追加到元素後面,然後刪除元素。

1

您可以嘗試使用屬性開始於選擇器^=

$('div[class^="ExternalClass"]').each(function(){ 
    $(this).replaceWith($(this).html()); 
}); 
1
var $text = ""; 
$.each($("div"), function(){ 
    $text = $text + this.html(); 
}); 
document.write($text); 
2
$('[class^="ExternalClass"]').replaceWith(function() { 
    return $(this).html(); 
}); 
+0

謝謝,dfsq。請參閱我對問題的註釋和要求的第二個項目符號:DIV應該只有類屬性,並且沒有其他屬性。迄今所有的答案都忽略了這一點。任何人都有解決方案? – Alex 2012-02-06 18:05:24

1

樣本HTML:

<div class="ExternalClass85AC900AB26A481DBDC8ADAE7A02F039">foo</div> 
<div class="ExternalClass85AC900AB26A481DBDC8ADAE7A02sdfsdsdfF039">bar</div> 

樣品的Jquery:

$('div[class^="ExternalClass"]').each(function() { 
    $(this).contents().unwrap(); 
}); 

輸出:

foo bar 

(wihtout的div)

繼承人的小提琴:

http://jsfiddle.net/6hbhL/