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