То, как найти с JavaScript, если элемент существует в DOM, или это является виртуальным (было просто создано createElement),

Я ищу способ найти, был ли элемент, на который ссылаются в JavaScript, вставлен в документ.

Позволяет иллюстрируют случай со следующим кодом:

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 имеет: видимый селектор, но это не даст точный результат, когда я должен буду найти, что невидимый элемент был помещен куда-нибудь в документе.

8
задан mpontus 13 July 2012 в 14:46
поделиться

3 ответа

Сделайте следующее:

var elem = document.createElement('div');
elem.setAttribute('id', 'my_new_div');

if (document.getElementById('my_new_div')) { } //element exists in the document.
14
ответ дан 5 December 2019 в 05:44
поделиться

Самый безопасный способ - напрямую проверить, содержится ли элемент в документе:

function isInDocument(el) {
    var html = document.body.parentNode;
    while (el) {
        if (el === html) {
            return true;
        }
        el = el.parentNode;
    }
    return false;
}

var elem = document.createElement('div');
alert(isInDocument(elem));
document.body.appendChild(elem);
alert(isInDocument(elem));
1
ответ дан 5 December 2019 в 05:44
поделиться

Используйте compareDocumentPosition , чтобы узнать, содержится ли элемент внутри документа . PPK содержит сведения о совместимости с браузером, а Джон Ресиг имеет версию для IE.

-1
ответ дан 5 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: