Проверка, является ли объект jQuery-объектом
Вопрос: Как быстро проверить, является ли объект объектом 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 ответ(ов)
Вам также может быть полезно использовать свойство .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 объектом.
Если вы хотите определить, является ли объект объектом jQuery, но у вас не установлен jQuery, вы можете использовать следующий код:
function isJQuery(obj) {
// Все объекты jQuery имеют атрибут, который содержит версию jQuery.
return typeof obj === "object" && obj != null && obj.jquery != null;
}
Этот фрагмент кода проверяет, является ли переданный объект не нулем, и имеет ли он свойство jquery
, что позволяет сделать вывод о том, что это именно jQuery-объект.
Данный код проверяет, является ли 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
.
Вы можете проверить, является ли объект созданным jQuery, с помощью свойства jquery
:
myObject.jquery // 3.3.1
⇒ Если объект был создан jQuery, то это вернет номер версии jQuery.
⇒ В противном случае вернется undefined
.
Как перенаправить на другую веб-страницу?
Прокрутка к элементу с использованием jQuery
jQuery: Получение Выбранного Значения Из Выпадающего Списка
Существует ли ссылка на "последнюю" библиотеку jQuery в Google APIs?
Потеряно HTML-кодирование при чтении атрибута из поля ввода