2010-10-29 74 views
1

我要添加HTML這樣的:的jQuery:刪除HTML元素,同時保持它的孩子

<div><img src="item.png"/>&nbsp;<a href="#"><span>Hello</span></a></div> 

,但在某些情況下,我需要擺脫包裝一元的,所以它看起來是這樣的:

<div><img src="item.png"/>&nbsp;<span>Hello</span></div> 

這個a元素可以在任意的HTML片段的任何地方。我抓住它[href =「#」]。這個HTML不是DOM的一部分,它在a元素被移除後被添加到DOM中。

我去了jQuery爲此提供的所有東西,但沒有成功。我的主要問題是, ,似乎有沒有辦法應用選擇爲HTML的jQuery像這樣創建:

$("html code from above"); 

我試圖讓一個元素與它替換它的內部HTML,但我所有的與 find()方法與replaceWith()構造失敗,大多隻是在<span>Hello</span>留:(

怎樣一個jQuery-PRO解決這個問題?

+1

除刪除錨的,如果需要的話,爲什麼不加呢? – 2010-10-29 20:47:09

+0

a元素形成了HTML的可點擊部分,並且由「第三方」創建,我不知道該把它放在哪裏。 – user414873 2010-10-30 06:23:06

回答

0

你需要做的是設置你的選擇的情況下。看到這個參考:http://api.jquery.com/jquery/#selector-context

就你而言,當你做選擇來替換鏈接時,將上下文設置爲你正在修改的HTML片段。這裏有一個例子:

$(function() { 
    //create snippet 
    var mySnippet = $('<div><img src="item.png"/>&nbsp;<a href="#"><span>Hello</span></a></div>'); 

    //remove the link, using the snippet as the context 
    $('a[href="#"]', mySnippet).replaceWith($('a[href="#"]', mySnippet).html()); 

    //insert the modified snippet 
    $('body').append(mySnippet); 
}); 

而這裏的,在動作演示(不是很興奮,但顯示了它的工作原理):http://jsfiddle.net/Ender/dQ32B/

+0

感謝Ender,這工作正常。我沒有意識到使用replaceWith時可以給出一個上下文。 – user414873 2010-10-30 06:24:29

4

豈不unwrap功能,你想要做什麼?

如果你只是想刪除周圍的標籤(如錨)

+1

只是想補充一點,如果你有一個你不想展開的元素中的文本,你必須首先鏈接內容:$('a')。contents()。unwrap() – drphrozen 2013-04-09 09:07:06

相關問題