Показать сообщение отдельно
  #1 (permalink)  
Старый 01.09.2011, 04:12
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Отличить DOM-элемент от объекта
Есть функция 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);
	}


Есть ли способ сделать лучше?

Последний раз редактировалось Octane, 11.09.2011 в 12:42.
Ответить с цитированием