jQuery sets your whole page as the innerHTML
of a <div>
, and therefore doctype, html, head and body elements are not parsed. You only get back a collection of the resulting elements, and since your #dashboard
is one of these top-level elements you need to filter
instead of find
.
See also:
I'm not sure how to solve this, apparently there's much jQuery quirks around there. What I can think of:
- try jQuery.parseXML
- rely on
filter
getting the element in question out of the jQuery collection. Though, since browsers seem not to be consistent about what the parse you should do something like$response[$response.is("#dashboard") ? "filter" : "find"]("#dashboard")
- Append the malformed collection to some element and
find
from there:$("<div/>").html(response).find("#dashboard")
- wait for
jQuery.parseHTML
- do not send a whole HTML document, but only the
#dashboard
element you're interested in as a html string