2011-09-02 163 views

回答

1

試試這個。

檢查它是否是DOM對象。

if(arg.tagName){ 
    //Its a dom element 
} 

要檢查它是否是一個jQuery對象

if(arg.jquery){ 
    //Its a jQuery object 
} 

工作demo

或者你可以試試這個函數將返回true,如果作爲參數傳遞的元素是DOM元件。

function isElement(o){ 
    return (
    typeof HTMLElement === "object" ? o instanceof HTMLElement : 
    typeof o === "object" && o.nodeType === 1 && typeof o.nodeName==="string" 
); 
+2

如果'arg = {tagName:'pancakes'}',則失敗。 –

+0

我在同一個答案中添加了另一個解決方案,請看看。 – ShankarSangoli

+1

'元素'應該工作,不是嗎?還有文字節點需要考慮。但是,對於你感興趣的問題的確切要求要比對房地產等進行間接檢查要好。 –

2

隨着現代瀏覽器,我認爲它是像

e instanceof Element 
e instanceof Text // text node 
+0

不錯。併爲您提供參考:https://developer.mozilla.org/en/HTML/Element –

+0

IE8也很友好。 – Leonid

0

只是檢查是不是有一個innerHTML的功能或不是對象。

例如:

function (obj) { 
    if(!!obj.innerHTML) // force the function to be boolean 
    { 
     // do something here if it was a html element 
    } 
    else { 
     // do stuff here if it wasn't 
    } 



} 
1

el instanceof Node會給你true如果EL是DOM的一部分。 el instanceof Element - true如果它也是一個元素。