#javascript #jquery
Вопрос:
Я пытаюсь изучить метод смещения jQuery, как показано ниже:
// offset() relates an element's border box to the document origin
offset: function( options ) {
// Preserve chaining for setter
if ( arguments.length ) {
return options === undefined ?
this :
this.each( function( i ) {
jQuery.offset.setOffset( this, options, i );
} );
}
...
Я не очень хорошо понимаю первый абзац. Похоже, что метод состоит в том, чтобы проверить, есть ли какие-либо аргументы, и если да, он проверит параметры, если параметры не указаны, просто вернет текущий объект, если какие-либо параметры определены, он установит смещение(это довольно странно, так как эта функция предназначена для получения смещения, а не для установки смещения).
Ответ №1:
.offset
может использоваться двумя способами: для получения смещения или для установки смещения. Посмотрите документы.
При вызове без аргументов он будет:
Описание: Получите текущие координаты первого элемента в наборе сопоставленных элементов относительно документа.
Отсюда и проверка на arguments.length
наличие .
При вызове с аргументом он будет:
.offset( coordinates )
Описание: Установите текущие координаты каждого элемента в наборе сопоставленных элементов относительно документа.
Вот почему код делает
if (arguments.length) {
// set offset of matching elements and return
}
// get and return offset of first matching element