JQuery: проверьте, существует ли элемент рядом с '.remove()'

Я знаю, что вы можете проверить, существует ли элемент с $('div').length, но когда элемент уничтожается с помощью .remove(), .length все еще сообщает, что div существует. Как я могу найти, действительно ли он существует?

if ($('div').length) { 
  alert('yes') 
} else { 
  alert('no') 
}

Ответ 1

Проверьте, имеет ли он родителя:

if ($element.parent().length) { alert('yes') }
else { alert('no') }

или если у вас есть ссылка на элемент DOM:

if(element.parentNode) {
    // yes
}

Очевидно, что это работает только для элементов, к которым у вас уже есть ссылка.

FWIW, сам элемент все еще существует, он просто не является частью дерева DOM.

Ответ 2

По существу, вы имеете в виду, что хотите увидеть, существует ли он в dom? Проверьте, является ли "html" предком:

var $myDiv = $(".myDiv");
$myDiv.closest("html").length;  // returns 1
$myDiv.remove();
$myDiv.closest("html").length;  // returns 0

Или используйте .is("html *"). Он возвращает логическое значение, которое удобно:

var $myDiv = $(".myDiv");
$myDiv.is("html *"); // returns true
$myDiv.remove();
$myDiv.is("html *"); // returns false

Ответ 3

if (!$foo.closest('html').length) {
    //Element is detached
}

Это будет работать, если один из родителей элементов был удален (в этом случае сам элемент будет по-прежнему иметь родителя).

Я цитирую этот ответ.

Ответ 4

вы можете получить родительский элемент перед удалением элемента, а после удаления элемента вы можете проверить это как!!

    var parent = $(element).parent();
    $(element).remove();

    if(parent.children(element)) {  alert('yes'); }
    else { alert('no'); }

конечно, элементом будет некоторый селектор jquery