Как узнать, если элемент был обернут jQuery?

Как я могу узнать, если объект обернут jQuery.

var obj = $('div');

if(obj is a jQuery wrapped object)
{
   then do something
}

Я совершенно новый в мире Javascript.

Спасибо заранее.

Ответ 1

Здесь вы идете:

var isJQuery = obj instanceof jQuery;  // or obj instanceof $;

Ответ 2

if (obj.jquery) {
    /* Do something */
}

Это самый простой способ. Проверка конструктора объекта - это еще один вариант, но обратите внимание, что он не будет работать в глобальных контекстах (например, между родительской страницей и кадром).

Ответ 3

Вы можете протестировать следующее:

if(obj instanceof jQuery) {
    // ...
}

Однако не совсем правильно сказать, что элемент HTML "обернут" в объект jQuery, а объект jQuery представляет собой набор из нуля или более HTML-элементов. Итак, если вы действительно хотите быть осторожным, вы можете сначала проверить, содержит ли он какие-либо элементы, как показано ниже:

if(obj instanceof jQuery && obj.length > 0) {
    var element = obj[0];
    // do something with element
}

Ответ 4

Эта проверка может помочь выделить объект массива из jQuery "массивного" объекта, если "элемент" var является тем или иным.

if (jQuery.isArray(element)) {
    // plain array object: []
} else {
    // jQuery wrapped object
}

Из jQuery docs:

$. isArray() возвращает логическое значение, указывающее, является ли объект массивом JavaScript (не похожим на массив объектом, таким как объект jQuery).

Ответ 5

Не пользователь jQuery, это не проверено и т.д., но

if (!(obj instanceof Element))
{
  // ...
}

может работать, если jQuery не делает странные вещи в своей упаковке. Конечно, это требует, чтобы вы знали, что obj никогда не может быть элементом non-jQuery, не являющимся элементом DOM, но, надеюсь, это не сложно выполнить.