有時候需要判斷頁面中是否有某個元素。但是僅僅使用
$(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本身也提供了很多替代方案。
還有諸多方法可進行檢測,在此不一一列舉。