Когда я должен обернуть объект 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
)