比如说我正在编写一个旨在接受多种参数类型的函数:
var overloaded = function (arg) {
if (is_dom_element(arg)) {
// Code for DOM Element argument...
}
};
实施 is_dom_element
的最佳方式是什么,以便它以跨浏览器,相当准确的方式运行?
答案 0 :(得分: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...
}
};
答案 1 :(得分:4)
这可能是这个:
node instanceof HTMLElement
这应该适用于大多数浏览器。否则你必须对它进行鸭式输入(例如typeof x.nodeType != 'undefined'
)
答案 2 :(得分:0)
怎么样?
obj instanceof HTMLElement