Node.contains:Zkontrolujte, zda je uzel potomkem jiného uzlu

Existuje spousta základních nativních metod JavaScriptu, o kterých mnoho vývojářů neví. Mnoho lidí neví například o Element.classList API, takže className správa se stává dalším případem, kdy potřebujete sadu nástrojů JavaScript i pro ty nejzákladnější úkoly. Dalším případem je kontrola rodičovství uzlů – vývojáři se domnívají, že to vyžaduje sadu nástrojů nebo kontrolu smyčky parentNode nahoru po řetězu; ne tak! Uzly poskytují contains metoda kontroly, zda jeden uzel není rodičem jiného:

function(parentNode, childNode) {
	if('contains' in parentNode) {
		return parentNode.contains(childNode);
	}
	else {
		return parentNode.compareDocumentPosition(childNode) % 16;
	}
}

Všimněte si, že kontrolujeme contains před jeho použitím, jak byste pravděpodobně očekávali, a použijte zřídka známý compareDocumentPosition v případě, že contains není podporován (Firefox <9). Tato metoda by byla užitečná při vytváření widgetu drag &drop a určování přesunů mezi seznamy. Každopádně, než uděláte ukvapený závěr, že potřebujete sadu nástrojů pro něco, co se zdá být základní, udělejte si rychlý průzkum a doufejme, že najdete jednodušší způsob!