Оскільки я не можу відповісти як коментар (гадаю, занадто низька карма), ось повна відповідь. Найшвидший спосіб легко розкрутити чек jQuery на підтримку браузера і збити постійні фактори до мінімуму.
Як видно також тут - http://jsperf.com/jquery-element-in-dom/28 - код виглядатиме так:
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);
Це семантично еквівалентно jQuery.contains (document.documentElement, elt [0]).
$foo.closest(document.documentElement)швидше (якщо когось цікавить jsperf.com/jquery-element-in-dom )