2008-09-23 19 views

回答

20

jQuery檢查nodeType屬性。所以你應該有:

var overloaded = function (arg) { 
    if (arg.nodeType) { 
     // Code for DOM Element argument... 
    } 
}; 

雖然這會檢測所有的DOM對象,而不僅僅是元素。如果僅希望元素,這將是:

var overloaded = function (arg) { 
    if (arg.nodeType && arg.nodeType == 1) { 
     // Code for DOM Element argument... 
    } 
}; 
4

也許這一個位置:

node instanceof HTMLElement 

這應該在大多數瀏覽器。否則,你必須鴨式輸入(例如:typeof x.nodeType != 'undefined'

+1

`HTMLElement`作爲構造函數沒有被定義爲通過任何標準的訪問,這是不是在IE在版本8之前。 – bobince 2010-02-01 15:59:37

+1

@bobince:HTMLElement在DOM級別2中定義。IE7和更早版本不支持它並不意味着它不是標準化的。你不應該使用`instanceof`的原因是,如果你正在進行跨框架開發,它將無法工作。 – 2012-08-09 00:47:14

+0

實際上,它不起作用的事實在某些情況下甚至可能是一個優點:通常,外部節點需要特殊處理(即導入),因此它們不能使用與本地節點相同的代碼路徑。 – 2012-09-06 16:27:54

0

什麼

obj instanceof HTMLElement 
相關問題