6

Проверка, является ли объект jQuery-объектом

1

Вопрос: Как быстро проверить, является ли объект объектом jQuery или нативным объектом JavaScript?

У меня есть следующий код:

var o = {};
var e = $('#element');

function doStuff(o) {
    if (o.selector) {
        console.log('object is jQuery');
    }
}

doStuff(o);
doStuff(e);

Явно, что код выше работает, но он не безопасен. Потенциально можно добавить ключ selector к объекту o, и результат будет таким же. Есть ли лучший способ убедиться, что объект действительно является объектом jQuery?

Что-то в духе (typeof obj == 'jquery').

4 ответ(ов)

1

Вам также может быть полезно использовать свойство .jquery, как описано здесь: http://api.jquery.com/jquery-2/

var a = { what: "Обычный объект JS" },
    b = $('body');

if (a.jquery) { // ложное, так как оно неопределено
    alert(' a - это объект jQuery! ');    
}

if (b.jquery) { // истинное, так как это объект jQuery
    alert(' b - это объект jQuery! ');
}

В данном коде мы создаём обычный объект a и объект jQuery b, который представляет элемент <body>. Первое условие проверяет наличие свойства jquery у объекта a, и оно будет ложным, так как объект a не является jQuery объектом. Второе условие проверяет наличие свойства jquery у объекта b и будет истинным, так как b является jQuery объектом.

0

Если вы хотите определить, является ли объект объектом jQuery, но у вас не установлен jQuery, вы можете использовать следующий код:

function isJQuery(obj) {
  // Все объекты jQuery имеют атрибут, который содержит версию jQuery.
  return typeof obj === "object" && obj != null && obj.jquery != null;
}

Этот фрагмент кода проверяет, является ли переданный объект не нулем, и имеет ли он свойство jquery, что позволяет сделать вывод о том, что это именно jQuery-объект.

0

Данный код проверяет, является ли el экземпляром jQuery. Если это так, то функция возвращает true, если размер объекта больше нуля, что указывает на наличие элементов в объекте jQuery. Если же el не является экземпляром jQuery, проверяется, существует ли объект и имеет ли он свойство tagName (что указывает на то, что это DOM-элемент). В конечном итоге, возвращается true, если el — это валидный DOM-элемент, и false в противном случае.

Вот переведенный код с объяснением:

return el instanceof jQuery ? el.size() > 0 : (el && el.tagName);

Если el — это jQuery объект, то возвратится true, если в нем есть элементы. Если el — это HTML элемент, то функция проверит его существование, и если он существует, то функция вернет его tagName. Если ни одно из условий не выполнено, возвратится false.

0

Вы можете проверить, является ли объект созданным jQuery, с помощью свойства jquery:

myObject.jquery // 3.3.1

⇒ Если объект был создан jQuery, то это вернет номер версии jQuery.
⇒ В противном случае вернется undefined.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь