有时候需要判断页面中是否有某个元素。但是仅仅使用
$(node).length
,如果
node
是一个已定义的节点对象就会返回1。
而有时页面中已经没有了这个节点,但只要该对象未销毁就会一直可用,也就一直返回1的值。
要判断页面中有没有该元素,最简单的方法是:
if(node.parentNode) { alert("存在"); } //原生DOM元素
if(jquery.parent().length) { alert("存在"); } //jQuery对象
理论上来说,一个单独的节点在脱离文档
document
后不会再有父节点,即其是孤立的。当然根元素也没有父节点,但根元素一般不可能脱离页面。
但如果一个元素本身还有子节点,那么它被移出文档时子节点依然有其父节点。这时也不需要递归获取,变通一下得到:
if(document.documentElement.contains(node)) { alert("存在"); } //原生DOM元素
if($(document).find(node).length) { alert("存在"); } //jQuery或DOM对象均可
理论上,使用第四种方法最为方便;DOM本身也提供了很多替代方案。
还有诸多方法可进行检测,在此不一一列举。