Opened 11 years ago
Closed 11 years ago
#12154 closed bug (invalid)
.replaceWith() seems to erase document when used on root.
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | undecided | Milestone: | None |
Component: | unfiled | Version: | 1.7.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
It seems that when I use .replaceWith()
on the root element of the DOM, it erase the document.
My document :
<content><p>stuffs</p></content>
The code :
var content = $(doc).find('content'); content.replaceWith(content.html());
Instead I use :
var content = $(doc).find('content'); content.after(content.html()); content.remove();
Change History (4)
comment:1 Changed 11 years ago by
comment:2 Changed 11 years ago by
Owner: | set to [email protected]… |
---|---|
Status: | new → pending |
Is this an XML document? If so you'd want to use $.parseXML
. If it's an HTML document, how are you getting a content
element under the document
element?
comment:3 Changed 11 years ago by
Status: | pending → new |
---|
In fact, my case is a bit atypical :
I use jQuery in Node to parse some DOM and insert some content.
So if meta.template
is <content></content>
, and meta.content exist, I will replace the entire content
tag with meta.content
// Creating the document var doc = jsdom.jsdom(meta.template? meta.template : '').createWindow().document, $doc = $(doc); // Inserting content $doc.find(key).html(meta[key]);
comment:4 Changed 11 years ago by
Resolution: | → invalid |
---|---|
Status: | new → closed |
Yes, it does sound very atypical and not something we can officially support since we have no unit tests for that environment. If it works, great. If it doesn't, sorry.
I can't past this code into jsFiddle, because it automatically adds a
body
tag, so the situation is different.