जब से मैं एक टिप्पणी के रूप में जवाब देने में असमर्थ हूँ (बहुत कम कर्म मुझे लगता है), यहाँ एक पूर्ण जबाब है। सबसे तेज़ तरीका ब्राउज़र समर्थन के लिए 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, ईएलटी [0])।
स्रोत
2013-11-09 02:53:35
+1 कि चालाक :) –
कर रहा है के लिए एक ठीक होगा '$ foo.closest (document.documentElement)' तेजी से होता है (किसी http://jsperf.com परवाह करता है अगर/jquery-element-in-dom) – urraka
@PerroAzul: मुझे _much_ तेज विकल्प मिला: http://jsperf.com/jquery-element-in-dom/2 – SLaks