Bir öğe DOM'dan removeChild()
kullanılarak kaldırıldığında, öğeye yapılan referans hala var, ancak öğe DOM'de artık yok.
Bir HTML öğesine (veya ebeveynlerine) hala bir belgeye eklenip eklenmediğini nasıl öğrenebilirim?HTML öğesi bir belgeye eklenmiş
cevap
: Ben sadece olsa Opera test
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function contains(parent, descendant) {
return parent == descendant || Boolean(parent.compareDocumentPosition(descendant) & 16);
}
window.addEventListener("DOMContentLoaded", function() {
var p = document.getElementById("test");
//document.body.removeChild(p);
alert(contains(document, p));
}, false);
</script>
</head>
<body>
<p id="test">test</p>
</body>
</html>
.
Bu sayfada da alternatifler var.
if(document.contains(yourElement)) {
// Yep, it's attached.
}
Uyumluluk: IE5 +
Belgeye doğrudan bağlıysa, parentNode
özelliğini kontrol edin. Böyle bir ana öğe yoksa ve ana öğe için başka bir başvuru yoksa, null
.
Sonraki kod, kullanımını gösterir, null
, [Object HTMLBodyElement]
ve null
'u yazdırır. Bir ana öğe kaldırılması durumunda
var elm = document.createElement("p");
alert(elm.parentNode);
document.body.appendChild(elm);
alert(elm.parentNode);
elm.parentNode.removeChild(elm);
alert(elm.parentNode);
Not yine bu sadece removeChild
kullanılarak kaldırılmıştır elemanları için de geçerli olduğunu, bu ana öğenin üzerine parentNode
özelliğini kontrol etmesi gerekir. Bir öğenin gerçekten bir belgenin parçası olup olmadığını öğrenmek için, en üstteki üst öğenin document
olup olmadığını kontrol etmeniz gerekir.
function element_is_part_of_document(element) {
/* as long as the element is not document, and there is a parent element */
while (element != document && element.parentNode) {
/* jump to the parent element */
element = element.parentNode;
}
/* at this stage, the parent is found. If null, the uppermost parent element */
/* is not document, and therefore the element is not part of the document */
return element == document;
}
bir unsur değil belgeye, başka elemana bağlıysa, bu söyleyecektir – Quentin
@David: Doğru, ama cevap bağlamında, bir sorun gibi görünmüyor. Ben yanıtı geliştirmeye devam ediyorum;) – Lekensteyn
Quentin, soru "bir düğüm veya ebeveynleri" diyor, bu yüzden Lekensteyn'in cevabı doğru –
Belgeye ulaşana veya düğümler tükenene kadar öğenin üst düğümünü kontrol etmeye devam edin. http://code.google.com/p/doctype-mirror/wiki/ArticleNodeContains itibaren
function is_element_in_document (element) {
if (element === document) {
return true;
}
element = element.parentNode;
if (element) {
return is_element_in_document (element);
}
return false;
}
- 1. Bir HTML öğesi nasıl dışlanır
- 2. Şöyle kendi HTML öğesi oluşturmak çalışıyorum dikey kaydırma HTML öğesi
- 3. Öğe/belgeye eklenmiş herhangi bir JavaScript olay dinleyicisi/işleyicisi olup olmadığını nasıl kontrol edebilirim?
- 4. HTML öğesi nasıl taşınır
- 5. Reklam için HTML öğesi?
- 6. Belirli bir html değeriyle çocuk öğesi içeren JQuery olsun öğesi
- 7. HTML öğesi altta konumlandırılmayacak durumda
- 8. Qt'de HTML öğesi nasıl oluşturulur?
- 9. Radyo öğesi durumuna göre HTML öğesi görünürlüğünü ayarlayın
- 10. Herhangi bir HTML öğesi bir fieldet/lejant olarak tasarlanabilir mi?
- 11. Bir HTML öğesi görüntülendiğinde tetikleyen bir Javascript olayı var mı?
- 12. Nesneler, aynı html kanvas öğesi üzerinde aynı html kanvas öğesi üzerine yerleştirildikten ve seçildikten sonra seçilemez:
- 13. Varolan bir belgeye ek özellikler ekleme elasticsearch
- 14. mongodb Böyle bir belgeye sahip C#
- 15. jQuery güncelleştirmesi html öğesi metni etkilemeden HTML alt öğeleri
- 16. Visual Studio HTML İmleç içinde HTML-Öğesi Sözdizimi vurgulama rengi
- 17. HTML tablo colgroup öğesi çalışmıyor mu?
- 18. HTML tuval öğesi için mouseMove olayını algıla
- 19. YQL HTML Öğesi Özelliklerini Kaybediyor musunuz?
- 20. Oynat Çerçeve Burgu şablonu html öğesi özniteliği
- 21. İki sınıf adı olan bir html öğesi nasıl seçilir?
- 22. mongodb bir aşağıdaki verilerle bir koleksiyona sahip belgeye
- 23. Bir jQueryUI menü öğesi
- 24. java.lang.IllegalArgumentException: Zaten eklenmiş Lokio/AsyncTimeout
- 25. Selenium neden dinamik olarak eklenmiş DOM öğeleri bulamıyor?
- 26. nasıl bir div öğesi (jQuery)
- 27. Özel Olayı Iframe'den Ana Belgeye Tetikle
- 28. jQuery'nin "belgeye hazır" işlevi nasıl çalışır?
- 29. fonksiyon onOpen() belgeye bir menü ve tost ekleyerek
- 30. Büyük bir koleksiyonda her belgeye yeni özellik ekleme
@ 0x89 Alternatif bir adres bulundu ve bağlantıyı düzeltildi. Raporlama için teşekkürler. – Shadow2531
16'nın, https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition adresinde açıklandığı gibi sabit bir değişkeni 'Node.DOCUMENT_POSITION_CONTAINED_BY' olduğunu merak eden herkes için. Ayrıca bu yöntem IE 8 ve daha düşük seviyelerde desteklenmemektedir. –