Как я могу узнать, если объект обернут jQuery.
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
Я совершенно новый в мире Javascript.
Спасибо заранее.
Как я могу узнать, если объект обернут jQuery.
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
Я совершенно новый в мире Javascript.
Спасибо заранее.
Здесь вы идете:
var isJQuery = obj instanceof jQuery; // or obj instanceof $;
if (obj.jquery) {
/* Do something */
}
Это самый простой способ. Проверка конструктора объекта - это еще один вариант, но обратите внимание, что он не будет работать в глобальных контекстах (например, между родительской страницей и кадром).
Вы можете протестировать следующее:
if(obj instanceof jQuery) {
// ...
}
Однако не совсем правильно сказать, что элемент HTML "обернут" в объект jQuery, а объект jQuery представляет собой набор из нуля или более HTML-элементов. Итак, если вы действительно хотите быть осторожным, вы можете сначала проверить, содержит ли он какие-либо элементы, как показано ниже:
if(obj instanceof jQuery && obj.length > 0) {
var element = obj[0];
// do something with element
}
Эта проверка может помочь выделить объект массива из jQuery "массивного" объекта, если "элемент" var является тем или иным.
if (jQuery.isArray(element)) {
// plain array object: []
} else {
// jQuery wrapped object
}
Из jQuery docs:
$. isArray() возвращает логическое значение, указывающее, является ли объект массивом JavaScript (не похожим на массив объектом, таким как объект jQuery).
Не пользователь jQuery, это не проверено и т.д., но
if (!(obj instanceof Element))
{
// ...
}
может работать, если jQuery не делает странные вещи в своей упаковке. Конечно, это требует, чтобы вы знали, что obj никогда не может быть элементом non-jQuery, не являющимся элементом DOM, но, надеюсь, это не сложно выполнить.