Yorum olarak yanıt veremediğim için (sanırım çok düşük karma), işte tam bir yanıt. En hızlı yol, tarayıcı desteği için jQuery kontrolünü açmak ve sabit faktörleri minimuma indirmektir.
Burada da görüldüğü gibi - http://jsperf.com/jquery-element-in-dom/28 - kod şöyle görünecektir:
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)
Bu anlamsal olarak jQuery.contains'e (document.documentElement, elt [0]) eşdeğerdir.
$foo.closest(document.documentElement)daha hızlıdır (eğer kimse umursuyorsa jsperf.com/jquery-element-in-dom )