Поскольку я не могу ответить как комментарий (я думаю, слишком низкая карма), вот полный ответ. Самый быстрый способ - это просто развернуть проверку 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 )