Estoy tratando de estudiar el método jQuery de compensación, como se muestra a continuación:
// 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 ); } ); } ...No puedo entender muy bien el primer párrafo. Parece que el método es verificar si hay algún argumento, y si es así, verificará las opciones, si no se proporcionan opciones, simplemente devolverá el objeto actual, si se define alguna opción, establecerá el desplazamiento (eso es bastante extraño ya que esta función es para obtener el desplazamiento, no para establecer el desplazamiento).
.offset se puede utilizar de dos formas: para obtener el desplazamiento o para establecer el desplazamiento. Ver los documentos .
Cuando se llama sin argumentos, hará lo siguiente:
Descripción: Obtiene las coordenadas actuales del primer elemento en el conjunto de elementos coincidentes, en relación con el documento.
De ahí la verificación de arguments.length .
Cuando se llama con un argumento, hará lo siguiente:
.offset( coordinates )Descripción: establece las coordenadas actuales de cada elemento en el conjunto de elementos coincidentes, en relación con el documento.
Por eso el código hace
if (arguments.length) { // set offset of matching elements and return } // get and return offset of first matching element