Depuis que je ne suis pas en mesure de répondre à un commentaire (trop faible karma, je suppose), voici une réponse complète. Le moyen le plus rapide est facile de dérouler le jQuery vérifier la prise en charge du navigateur et de se raser les facteurs constants au minimum.
Comme on le voit aussi ici - http://jsperf.com/jquery-element-in-dom/28 - le code devrait ressembler à ceci:
var isElementInDOM = (function($) {
var docElt = document.documentElement, find,
contains = docElt.contains ?
function(elt) { return docElt.contains(elt); } :
docElt.compareDocumentPosition ?
function(elt) {
return docElt.compareDocumentPosition(elt) & 16;
} :
((find = function(elt) {
return elt && (elt == docElt || find(elt.parentNode));
}), function(elt) { return find(elt); });
return function(elt) {
return !!(elt && ((elt = elt.parent) == docElt || contains(elt)));
};
})(jQuery);
C'est sémantiquement équivalent à jQuery.contient(document.documentElement, elt[0]).