Когда я должен обернуть объект DOM с помощью $()?

Использование JQuery:

Иногда я могу сделать variable.val(), и он работает. Иногда мне нужно использовать $(variable).val().

Я хочу иметь возможность сделать выбор без проб и ошибок.

Кто-нибудь знает, когда нужно обернуть объект с помощью $() при использовании JQuery?

Ответы

Ответ 1

Обертка объекта DOM с помощью $() преобразует его в элемент, заполненный jQuery. Таким образом, вы должны иметь возможность вызвать с ним методы jQuery (val(), attr(), show(), hide(), serialize()).

Если вам нужно получить или установить чистые свойства javascript, вы не должны его обертывать.

Ответ 2

Проще говоря $(variable) принимает элемент DOM и создает объект jQuery. Вам нужно использовать его в любое время, когда вы заканчиваете объект DOM, а не объект jQuery.

Наиболее вероятными причинами, по которым вы получите объект DOM, будет:

  • События. В любом случае, когда вы связываете (например, щелчок) в jQuery, переменная this и все аргументы события ссылаются на объекты DOM (а не объекты jQuery).
  • jQuery jQuery jQuery - если у вас есть части вашего кода, которые все еще используют document.getElementById (например, если у вас есть какой-то старый javascript или ссылаются на стороннюю библиотеку, которая не является плагином jQuery по какой-то причине), то это будут DOM и необходимо обернуть.

Однако при вызове $(variable) нет вреда, если variable уже является объектом jQuery, за пределами обфускации для того, кто может предположить, что это объект DOM, как вы его используете, и вы всегда можете вернуться в DOM объект, вызвав $(variable)[0].

Ответ 3

Кто-нибудь знает, когда нужно обернуть объект с помощью $() при использовании JQuery?

К моменту: когда obj instanceof jQuery возвращает значение false. Это часто бывает с аргументами this и method (если метод не документирован, так что аргумент ДОЛЖЕН быть объектом jQuery).

Итак, если у вас есть this, и вы хотите иметь функции jQuery, тогда вам нужно его обернуть. Например.

function() {
   $this = $(this);
   $this.val();
}

Также, если у вас есть функция, аргументы которой не обязательно являются элементами jQuery, и вы хотите убедиться, что они есть, тогда вам нужно сначала ее обернуть. Например.

function(e) {
    e = $(e);
    e.val();
}

Не повредить re-wrap элемент jQuery.

Ответ 4

В начале обучения jQuery часто возникает проблема с пробкой и ошибкой, когда переменная уже завернута или нет. Например, в функциях событий эта переменная не является объектом jQuery. Кроме того, я считаю, что вообще не опасно перематывать объект jQuery.

Я не думаю, что вам нужно беспокоиться, потому что вы скоро узнаете, когда обернуть, а когда нет, поскольку в будущем вы напишете больше jQuery-кода.

Ответ 5

Если у вас есть обработчик событий, то для получения val() вам нужно его обернуть, так как elem ниже не завернуто, но вы можете просто сделать elem.value в моем примере ниже.

$('#someid').bind('click', function(e) {
  var elem = e.currentTarget;
}

Если вы не получили элемент от использования селектора, вам, вероятно, придется его обернуть.

У вас может быть только функция утилиты, которая вернет обернутый элемент, если вы действительно этого хотите, поэтому он всегда завернут.

Просто передайте в него любой элемент, и он сможет проверить, является ли он объектом jquery и если он не переносит его, но он всегда будет возвращать завернутую версию.

Ответ 6

Нет никакого вреда при использовании $(something) (если вы планируете использовать методы jQuery на something)