2011-09-02 121 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如果它也是一个元素。