2011-08-05 125 views
5

我可以這樣做:替換整個元素而不是innerHTML?

$('my-panel').innerHTML = '<p> New content </p>'; 

但是,如果有做這樣的事情

$('my-panel').wholeHTML = "<div id='my-panel'><p> New Content</p></div>"; 

的任何方法可以讓我找不到任何辦法。如果我不能這樣做,我將不得不重構一大堆東西,這會很耗時。

回答

6

什麼outerHTML,其中包括 '整體' 的標籤:

$('my-panel').outerHTML = '<p> New content </p>'; 

http://jsfiddle.net/pimvdb/Sah2U/1/

+0

嗯,那工作。我應該真的嘗試過,謝謝。有沒有一個API列表的某處這個東西?我在看的頁面沒有提及任何對outerHTML的引用。 – Oliver

+0

@Oliver:我無法在MDN上找到它(奇怪),但MSDN有一個很好的參考:http://msdn.microsoft.com/en-us/library/ms534310(v=vs.85).aspx。 – pimvdb

+0

Ouch,只是看了一下,顯然.outerHTML是非標準的,並且在某些瀏覽器上不起作用。 – Oliver

1

你總是可以得到標籤parentNode和替換他的innerHTML

  $('my-panel').parentNode.innerHTML = '<p> New Content</p>' 
+2

除非父元素的子元素更多,否則這會很好,在這種情況下會被銷燬。 – pimvdb

+0

這是代碼在我改變之前所做的事情。原作者通過引入額外的div來解決這個問題,但我討厭這樣做。 – Oliver

2

你使用mootools的,對?你可以很容易地替換元素,即:

Elements.from("<div id='my-panel'><p> New Content</p></div>").replaces($("my-panel")); 
+0

哦,這很方便。我將在未來做到這一點。 – Oliver

+0

它是跨瀏覽器:) – stecb

相關問題