So finden Sie mit javascript, wenn das element existiert in DOM oder virtuell (wurde gerade erstellt createElement)
Ich bin auf der Suche nach einem Weg zu suchen, wenn das element verwiesen, die in javascript in das Dokument eingefügt.
Können zeigen, ein Fall mit dem folgenden code:
var elem = document.createElement('div');
//Element has not been inserted in the document, i.e. not present
document.getElementByTagName('body')[0].appendChild(elem);
//Element can now be found in the DOM tree
Jquery :sichtbar-Selektor, aber es wird nicht das exakte Ergebnis, wenn ich brauche zu finden, das unsichtbare element platziert wurde irgendwo in das Dokument.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine einfachere Methode, die verwendet die standard - Knoten.enthält eine DOM-API zu überprüfen, sich in einem element befindet sich derzeit in der DOM:
CROSS-BROWSER-HINWEIS: das document-Objekt im IE nicht über eine
contains()
Methode - Sicherstellung der cross-browser-Kompatibilität, verwenden Siedocument.body.contains()
statt. (oder Dokument.Kopf.enthält wenn Sie die überprüfung für Elemente wie link -, script, etc)Hinweise auf die Verwendung eines bestimmten
document
Referenz vs-Knoten-EbeneownerDocument
:Jemand die Idee gereift, mit
MY_ELEMENT.ownerDocument.contains(MY_ELEMENT)
zu überprüfen, ob ein Knoten Präsenz in dem Dokument. Während dieser kann produzieren das gewünschte Ergebnis (wenn auch mit mehr Ausführlichkeit als nötig in 99% der Fälle), kann es auch zu unerwarteten Ergebnissen führen, je nach Anwendungsfall. Lassen Sie uns darüber reden, warum:Wenn Sie es mit einem Knoten, der gegenwärtig befindet sich in einem separaten Dokument, wie eine generiert mit
document.implementation.createHTMLDocument()
eine<iframe>
- Dokument oder ein HTML-Dokument Importieren, und verwenden Sie die KnotenownerDocument
Eigenschaft zu prüfen, für die Präsenz in dem, was Sie denke werden Haupt -, visuell wiedergegebendocument
werden Sie in eine Welt der verletzt.Die Knoten-Eigenschaft
ownerDocument
ist einfach ein Zeiger auf was aktuellen Dokument der Knoten befindet. Fast jeden Anwendungsfall, voncontains
umfasst die Prüfung eine bestimmtendocument
für einen Knoten präsent ist. Sie haben 0 garantieren, dassownerDocument
ist das gleiche Dokument, das Sie prüfen wollen - nur Sie wissen das. Die Gefahr vonownerDocument
ist, dass jemand kann sich vorstellen, eine beliebige Anzahl von Möglichkeiten, Referenz, importieren oder generieren von Knoten, die sich in anderen Dokumenten. Wenn Sie das tun, und die Sie geschrieben haben, Ihren code auf die Sie sich verlassenownerDocument
's relative Ableitung, Ihren code brechen kann. Um sicherzustellen, dass Ihr code immer liefert die erwarteten Ergebnisse, sollten Sie nur vergleichen gegen die auf Sie ausdrücklich verwiesen wirddocument
Sie beabsichtigen, zu überprüfen, nicht Vertrauen, relative Schlüsse ziehen, wieownerDocument
.Hierzu:
Ist der sicherste Weg, um zu testen direkt, ob das element in dem Dokument enthalten ist:
Können Sie auch
jQuery.enthält
:Verwenden compareDocumentPosition um zu sehen, ob das element enthalten ist, im inneren
document
. PPK hat der browser-Kompatibilität details und John Resig hat eine version für den IE.compareDocumentPosition
auch, aber das Herumspielen bis es funktioniert in allen Browsern scheint nicht wirklich Wert, wenn Sie tun können, etwas so einfaches wie das gehen bis der Knoten-Baum, wie in meiner Antwort, die Arbeit wird in so ziemlich jedem browser.