我知道你可以检查一个元素是否存在与$('div').length
,但是当一个元素被销毁时使用.remove()
,.length
仍然报告div存在。我怎样才能找到它是否真的存在?JQuery:检查元素是否存在在'.remove()'
if ($('div').length) {
alert('yes')
} else {
alert('no')
}
我知道你可以检查一个元素是否存在与$('div').length
,但是当一个元素被销毁时使用.remove()
,.length
仍然报告div存在。我怎样才能找到它是否真的存在?JQuery:检查元素是否存在在'.remove()'
if ($('div').length) {
alert('yes')
} else {
alert('no')
}
测试它是否有父:
if ($element.parent().length) { alert('yes') }
else { alert('no') }
,或者如果你有到DOM元素的引用:
if(element.parentNode) {
// yes
}
显然,这只是为元素的作品,你已经有一个参考。
FWIW,元素本身仍然存在,它只是不是DOM树的一部分。
如果任何'$ element'的父元素已经从DOM中删除,这将不起作用。例如,'$ element.parent()。remove()'。尽管'$ element'不在DOM树中,'$ element.parent()。length'仍然是1。 – gilly3
@ gilly3:好的,我假设''.remove()'是在元素上执行的,正如问题中提到的那样。无论如何,你的解决方案+1,但我认为这是足够的,而不是'html'寻找'body'。 –
存在,你的意思是你想看看它是否存在于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
你可以得到元素的父删除元素和元素已被删除后,可以检查像在此之前!
当然var parent = $(element).parent();
$(element).remove();
if(parent.children(element)) { alert('yes'); }
else { alert('no'); }
元素是一些jQuery选择
if (!$foo.closest('html').length) { //Element is detached }
如果该元素的父母一方,删除了此仍然可以工作(在这种情况下,元素本身仍然有一个父)。
我引用this answer。
错误..不完全确定你的意思。如果使用'.remove()',则该元素将从DOM中移除。长度报告预期结果:http://jsfiddle.net/TmPBC/ –
只要页面上有div,就会提示yes。您可以使用ID来测试是否删除了确切的元素。 – Paulpro
$('div')就是一个例子。我没有测试整个页面是否有任何div。 – gavsiu