Есть функция is, которая проверяет, удовлетворяет ли указанным параметрам DOM-элемент.
Ну например в jQuery:
$("body").is(document.body) //→ true
Пишу подобную функцию, но с возможностью указать объект с набором свойств для сравнения:
//сравниваем свойства
$("html").is({lang: "ru-RU"})
//сравниваем атрибуты
$("html").is('[lang="ru-RU"]')
И тут возникает проблема:
$("html").is({nodeType: 1, nodeName: "html"})
как отличить DOM-объект от обычного объекта?
Из-за IE простой проверкой
node instanceof Node
не обойтись, пришлось городить кучу условий:
//для IE<8
function isNode(arg) {
return Boolean(typeof arg == "object" && !(arg instanceof Object) && arg.nodeType);
}
Есть ли способ сделать лучше?