如何检查jQuery元素是否在DOM中?

假设我定义了一个元素

$foo = $('#foo');

然后我打电话

$foo.remove()

来自某个事件。 我的问题是,如何检查$ foo是否已从DOM中删除? 我发现$foo.is(':hidden')有效,但如果我仅仅调用$foo.hide() ,那当然也会返回true。


喜欢这个:

if (!jQuery.contains(document, $foo[0])) {
    //Element is detached
}

如果元素的父项之一被删除(在这种情况下元素本身仍然有父项),这仍然可以工作。


如何做到这一点:

$element.parents('html').length > 0

当我输入我的问题时,我才意识到一个答案:打电话

$foo.parent()

如果$f00已经从DOM中删除,那么$foo.parent().length === 0 。 否则,其长度至少为1。

[编辑:这不完全正确,因为移除的元素仍然可以有一个父元素; 例如,如果删除<ul> ,则其每个子<li>将仍然具有父项。 改用SLaks的答案。

链接地址: http://www.djcxy.com/p/83859.html

上一篇: How do I check whether a jQuery element is in the DOM?

下一篇: Why does $('#id') return true if id doesn't exist?