Обнаружение объекта jQuery - PullRequest
3 голосов
/ 04 июля 2010

Я пишу плагин для jQuery и хочу сделать так, чтобы пользователь мог передавать данные в плагин в любой форме. У меня есть проблема с JSON или массивом, но у меня возникают проблемы при попытке определить, являются ли данные объектом jQuery.

data = $('#list li');
console.debug( $.isPlainObject(data) );   // false
console.debug( $.isArray(data) );         // false
console.debug( data[0].tagName == "LI" ); // true, but see note below

Последний метод возвращает true, но нет никакой гарантии, что пользователь использует тег LI для своих данных, поэтому я думаю, что мне нужно что-то вроде этого:

if ( $.isjQueryObject(data) ) { /* do something */ }

Кто-нибудь знает лучший метод?

Ответы [ 3 ]

9 голосов
/ 04 июля 2010

Объект jQuery (или его псевдоним $) представляет собой простую функцию конструктора , все объекты jQuery наследуются от объекта jQuery.prototype (или его псевдонима * 1008). *).

Вы можете проверить, существует ли объект в цепочке прототипов другого объекта, используя оператор instanceof или метод isPrototypeOf, например:

function isjQueryObject(obj) {
  return obj instanceof jQuery;
}

Или:

function isjQueryObject(obj) {
  return jQuery.fn.isPrototypeOf(obj);
}
1 голос
/ 04 июля 2010

Как насчет:

var isJq = data instanceof jQuery;
1 голос
/ 04 июля 2010

Объект jQuery - это просто набор элементов, хранящихся в виде массива, с дополнительными функциями и дополнительными элементами. По сути, вы можете использовать элементы jQuery так же, как обычный массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...