2011-08-05 13 views
5

mogę to zrobić:Zastąpić cały element zamiast innerHTML?

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

Ale czy jest jakiś sposób zrobić coś jak

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

nie mogę znaleźć żadnego sposobu. Jeśli nie mogę zrobić czegoś takiego, będę musiał zreorganizować całą masę rzeczy, co byłoby czasochłonne.

Odpowiedz

6

Co outerHTML, który obejmuje 'cały Tag:

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

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

+0

Huh, działało. Powinienem był to zrobić naprawdę, dzięki. Czy gdzieś tam znajduje się lista API? Strona, której szukałem, nie zawiera żadnych odniesień do outerHTML. – Oliver

+0

@Oliver: Nie mogę znaleźć tego na MDN (dziwne), ale MSDN ma dobre odniesienie: http://msdn.microsoft.com/en-us/library/ms534310(v=vs.85).aspx. – pimvdb

+0

O tak, patrząc tylko trochę, najwyraźniej .outerHTML jest niestandardowy i nie działa w niektórych przeglądarkach. – Oliver

1

zawsze można uzyskać parentNode tagi i zastąpić jego innerHTML

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

To zadziała świetnie, chyba że jest więcej dzieci elementu nadrzędnego, w którym to przypadku zostaną one zniszczone. – pimvdb

+0

To właśnie robił kod, zanim przyszedłem go zmienić. Oryginalny pisarz rozwiązał problem, wprowadzając dodatkowy element tylko w tym celu, ale nienawidzę robienia takich rzeczy. – Oliver

2

użyć Mootools, dobrze? można łatwo wymienić element, tj .:

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

Oooh, to jest przydatne. Zrobię to w przyszłości. – Oliver

+0

I to jest przeglądarka internetowa :) – stecb

Powiązane problemy