JQuery:检查元素是否存在于'.remove()'旁边

时间:2011-07-15 23:30:47

标签: jquery exists

我知道您可以检查$('div').length是否存在元素,但是当使用.remove()销毁某个元素时,.length仍会报告div存在。我怎样才能确定它是否真的存在?

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

4 个答案:

答案 0 :(得分:7)

存在,你的意思是你想看看它是否存在于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

答案 1 :(得分:6)

测试它是否有父母:

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

或者如果你有对DOM元素的引用:

if(element.parentNode) {
    // yes
}

显然,这仅适用于您已经引用的元素。

FWIW,元素本身仍然存在,它不是DOM树的一部分。

答案 2 :(得分:4)

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

如果删除了一个元素的父元素(在这种情况下元素本身仍然具有父元素),这仍然有效。

我引用this answer

答案 3 :(得分:0)

你可以在删除元素之前获取元素的父元素,并且在删除元素之后你可以像这样检查!

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

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

当然,元素将是一些jquery选择器