JS/jQuery判断页面中是否存在指定元素

有时候需要判断页面中是否有某个元素。但是仅仅使用$(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本身也提供了很多替代方案。
还有诸多方法可进行检测,在此不一一列举。

你可能感兴趣的:(Javascript,前端,#jQuery)