Vì tôi không thể trả lời làm nhận xét (quá thấp nghiệp), đây là câu trả lời đầy đủ. Cách nhanh nhất là dễ dàng để unroll kiểm tra jQuery cho hỗ trợ trình duyệt và để cạo các yếu tố liên tục đến mức tối thiểu.
Như đã thấy cũng ở đây - http://jsperf.com/jquery-element-in-dom/28 - mã sẽ trông như thế này:
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);
Đây là ngữ nghĩa tương đương với jQuery.contains (document.documentElement, ELT [0]).
Nguồn
2013-11-09 02:53:35
+1 đó là trơn tru :) –
làm '$ foo.closest (document.documentElement)' là nhanh hơn (nếu có ai quan tâm http://jsperf.com/jquery-element-in-dom) – urraka
@PerroAzul: Tôi tìm thấy một thay thế nhanh hơn _much_: http://jsperf.com/jquery-element-in-dom/2 – SLaks