如何检查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的答案。