12

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

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

实现is_dom_element它以跨浏览器、相当准确的方式工作的最佳方法是什么?

4

3 回答 3

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...
    }
};
于 2008-09-23T10:44:25.490 回答
4

大概是这个:

node instanceof HTMLElement

这应该适用于大多数浏览器。否则你必须鸭式它(例如。typeof x.nodeType != 'undefined'

于 2008-09-23T10:43:27.783 回答
0

关于什么

obj instanceof HTMLElement
于 2008-09-23T11:30:47.093 回答