2011-11-07 45 views
4

如果我知道元素的ID,是否可以更改它具有的HTML標記的類型?使用jQuery更改元素的類型

例如,如果您有<p id="p">Lots and lots of text here.</p>,是否可以將其更改爲<span id="p">....

謝謝。

+5

http://stackoverflow.com/questions/918792/use-jquery-to-change-an-html-tag – Vikk

+0

@Vikk - 謝謝,我以前無法在這裏找到答案。 –

回答

9

您可以使用replaceWith方法來做到這一點。您將需要重建替換的屬性。

$('#p').replaceWith(function(){ 
    return '<span>' + $(this).contents().text() + '</span>'; 
}); 

Working example

+1

完美,感謝您的快速回復。 –

1
$("p").replaceWith(....) ............. 
+1

我認爲David正在尋找$(「#p」)。replaceWith(...)將DOM中的一個特定元素替換爲「p」,而不是使用相同的新內容替換所有的段落標籤。 – Todd

+0

@RoyiNamir - 這確實讓我在正確的道路上,因爲我不知道'replaceWith()'的存在。謝謝。 –

+0

請選擇幫助你的答案。 –

2

你可以這樣做:

var a = $('#p').text(); 
$('#p').replaceWith('<span id="#p">' + a + '</span>'); 

http://jsfiddle.net/teBuN/

+0

只會做我以後,謝謝。 –

2
var el = document.getElementById(id); 
var new = document.createElement("span"); 
new.id = el.id; 
[].forEach.call(el.childNodes, function (node) { 
    new.appendChild(node); 
}); 
el.parentNode.replaceChild(new, el); 

現在,一個很好的問題,就是爲什麼。你爲什麼要改變html元素?

當然,你選擇這一塊數據的語義元素最多,爲什麼另一個元素是一個更好的選擇?

+0

有點囉嗦滿足我的需求,但感謝回覆。 –