Я пишу плагин для 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
Mottie 4 Июл 2010 в 05:39

3 ответа

Лучший ответ

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

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

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

Или же:

function isjQueryObject(obj) {
  return jQuery.fn.isPrototypeOf(obj);
}
9
CMS 4 Июл 2010 в 01:53

Как насчет:

var isJq = data instanceof jQuery;
1
Ken Redler 4 Июл 2010 в 01:55

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

1
Colin O'Dell 4 Июл 2010 в 01:42