检测给定Javascript对象是否为DOM元素的最佳方法是什么?

Mat*_*rne 12 javascript dom cross-browser

比方说,我正在编写一个旨在接受多种参数类型的函数:

var overloaded = function (arg) {
    if (is_dom_element(arg)) {
        // Code for DOM Element argument...
    }
};
Run Code Online (Sandbox Code Playgroud)

什么是最好的实施方式,is_dom_element以便以跨浏览器,相当准确的方式工作?

Jim*_*Jim 20

jQuery检查nodeType属性.所以你会:

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

虽然这会检测所有DOM对象,而不仅仅是元素.如果你只想要元素,那就是:

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