Поймите фрагмент кода в методе смещения jQuery

#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