Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2018, 22:33
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

Просмотрела исходик jQuery Откорректируйте где не верно
Приветствую. Изучаю javascript и пытаюсь понять как работает jQuery. Прошу поправить мои комментарии к релизу версии 1.12. (из-за поддержки старых IE) в случае неверного истолкования.
jQuery JavaScript Library v1.12.4
Обозначения в комментариях:
-"Количество вызовов" = количество вызовов в других местах исходника
-"..." = см. исходник
Код значительно урезан с соблюдением исходной последовательности и синтаксиса, крупные блоки оставленные в оригинале если непрокомментированы
Исходный код
Разбиваю на несколько сообщений, целиком не пропускает
// 1. Мгновенно вызываемая функция (IIFE)
(function( global, factory ){определение модуля}(модуль))

// 1.1. Определение модуля
if ( typeof module === "object" && typeof module.exports === "object" ) { //... }

// 1.2. Модуль
typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
"use strict";

// Количество вызовов: 9
var deletedIds = [];

// Без комментариев
var document = window.document;
var slice = deletedIds.slice;
var concat = deletedIds.concat;
var push = deletedIds.push;
var indexOf = deletedIds.indexOf;

// Class2type карта. Количество вызовов: 4
var class2type = {};

// Количество вызовов: 2
var toString = class2type.toString;

// Количество вызовов: 6. У Sizzle своя переменная hasOwn
var hasOwn = class2type.hasOwnProperty;

/* Объект с информацией об особенностях текущего браузера. Количество вызовов: 74. У Sizzle своя переменная support */
var support = {};

var 
    // Количество вызовов: 2
    version = "1.12.4", 

    /* Основная функция. Функция-конструктор, создающая в памяти браузера копию (экземпляр)
    базового объекта - объект jQuery. Количество вызовов: 744 */
    jQuery = function( selector, context ){return new jQuery.fn.init( selector, context );},
    
    // Количество вызовов: 2. У Sizzle своя переменная rtrim
    rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,

    // Количество вызовов: 1
    rmsPrefix = /^-ms-/,
    rdashAlpha = /-([\da-z])/gi,

    // Камелизация. Количество вызовов: 1
    fcamelCase = function( all, letter ) { return letter.toUpperCase(); 	};

// Для освобождения памяти от дубликатов методов. Количество вызовов: 39
jQuery.fn = jQuery.prototype = { /* определение свойств экземпляра jQuery в свойстве prototype конструктора объекта jQuery */ };

// Количество вызовов: 30
jQuery.extend = jQuery.fn.extend = function() { /* функция extend() - реализация extends (JS), наследование */ };

jQuery.extend( { /* добавление следующих свойств в объект jQuery: expando, isReady, error, noop, isFunction, isArray, isWindow, isNumeric, 

isEmptyObject, isPlainObject, type, globalEval, camelCase, nodeName, each, trim, makeArray, inArray, merge, grep, map, guid, proxy, now, 

support */ } );

// Анализатор кода JSHint
/* jshint ignore: start */
if ( typeof Symbol === "function" ) {
  jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ];
}
/* jshint ignore: end */

// Заполнение class2type карты
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
function( i, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } );

// Функция, определяющая является ли объект массивом. Количество вызовов: 3
function isArrayLike( obj ) { //... }

// Количество вызовов: 6, не включая Sizzle.js
var Sizzle = (function( window ) { /* Sizzle - кросс-браузерный движок селекторов */ })( window );

// Количество вызовов: 10
jQuery.find = Sizzle;

// Количество вызовов: 12 
jQuery.expr = Sizzle.selectors;

// Количество вызовов: 0 
jQuery.expr[ ":" ] = jQuery.expr.pseudos;

// Количество вызовов: 3
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;

// Количество вызовов: 2
jQuery.text = Sizzle.getText;

// Количество вызовов: 4
jQuery.isXMLDoc = Sizzle.isXML;

// Количество вызовов: 12
jQuery.contains = Sizzle.contains;

// Функция проверки dir()-проверка на наличие в результатах иных элементов, кроме DOM
Количество вызовов: 6. У Sizzle своя переменная dir
var dir = function( elem, dir, until ) { //... };

// Функция выбора потомков siblings(). Количество вызовов: 2
var siblings = function( n, elem ) { //... };

// Количество вызовов: 2
var rneedsContext = jQuery.expr.match.needsContext;
var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );

// Количество вызовов: 1
var risSimple = /^.[^:#\[\.,]*$/;

// Количество вызовов: 3
function winnow( elements, qualifier, not ) { /* функция-фильтр winnow() - реализация js-функции filter() */ }

// Количество вызовов: 4
jQuery.filter = function( expr, elems, not ) { /* метод .filter()-реализация js-функции filter() */ };

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: find, filter, not, is */ } );

// Главная ссылка на корневой jQuery(document). Количество вызовов: 3
var rootjQuery,

    // Проверка HTML строк. Количество вызовов: 3
    rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,

    // Количество вызовов: 5
    init = jQuery.fn.init = function( selector, context, root ) { /* функция init() */ };

// Придание функции init свойства prototype конструктора объекта jQuery для последующего создания экземпляра. Количество вызовов: 1
init.prototype = jQuery.fn;

// Инициализация главной ссылки
rootjQuery = jQuery( document );

// Количество вызовов: 1
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
    
    // Методы jQuery, гарантирующие создание уникального набора. Количество вызовов: 1
    guaranteedUnique = {
      children: true,
      contents: true,
      next: true,
      prev: true
    };

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: has, closest, index, add, addBack */ } );

// Функция выборки потомков sibling(). Количество вызовов: 2
function sibling( cur, dir ) { //... }

// Количество вызовов: 29
jQuery.each( { /* перебирающая функция jQuery.each() */ };

// Количество вызовов: 10
var rnotwhite = ( /\S+/g );

/* Функция преобразования строчно-отформатированных опций в объектно-отформатированные.
Количество вызовов: 1 */
function createOptions( options ) { //... }

// Количество вызовов: 5
jQuery.Callbacks = function( options ) { функция jQuery.Callbacks() }

jQuery.extend( { /* добавление следующих свойств в объект jQuery: Deferred, when(Deferred helper) */ } );

// Deferred, используемая в DOM, готовность. Количество вызовов: 4
var readyList;

// Количество вызовов: 0
jQuery.fn.ready = function( fn ) {
  // Добавление функции обратного вызова
  jQuery.ready.promise().done( fn );
  return this;
};

jQuery.extend( { /* добавление следующих свойств в объект jQuery: readyWait, holdReady, ready */ } );

// Функция очистки для готовых событий DOM. Количество вызовов: 0
function detach() { //... }

// Обработчик готовых событий. Количество вызовов: 0
function completed() { //... }

// Количество вызовов: 2
jQuery.ready.promise = function( obj ) { /* jQuery.ready.promise() - метод самоочистки */ };

// Удаляем проверку готовности DOM даже если пользователь этого не делал
jQuery.ready.promise();

// Повторение свыше унаследованных свойств объекта вплоть до его собственных
var i;
for ( i in jQuery( support ) ) { break; }
support.ownFirst = i === "0";

/* Примечание: Большинство тестов поддержки определены в их соответствующих модулях. False до запуска теста. Количество вызовов: 2 */
support.inlineBlockNeedsLayout = false;

jQuery( function() { /* исполнение «как можно скорее» в случае если нужно установить body.style.zoom */ } );

( function() {
  var div = document.createElement( "div" );
  // Support: IE<9
  support.deleteExpando = true;
  try {
    delete div.test;
  } catch ( e ) {
    support.deleteExpando = false;
  }
  // Null elements to avoid leaks in IE.
  div = null;
} )();

// Проверка данных. Количество вызовов: 5
var acceptData = function( elem ) { //... };

// Количество вызовов: 1
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
    rmultiDash = /([A-Z])/g;

// Подготовка данных для метода .data(). Количество вызовов: 2
function dataAttr( elem, key, data ) { //... }

// Проверка объекта кэша на пустоту. Количество вызовов: 3
function isEmptyDataObject( obj ) { //... }

// Количество вызовов: 2
function internalData( elem, name, data, pvt ) { /* правила обработки данных */ }

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: data, removeData */ } );

jQuery.extend( { /* добавление следующих свойств в объект jQuery: queue, dequeue, _queueHooks */ } );

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: queue, dequeue, clearQueue, promise */ } );

( function() {
  var shrinkWrapBlocksVal;
  support.shrinkWrapBlocks = function() {
    if ( shrinkWrapBlocksVal != null ) { return shrinkWrapBlocksVal; }
    shrinkWrapBlocksVal = false;
    var div, body, container;
    body = document.getElementsByTagName( "body" )[ 0 ];
    if ( !body || !body.style ) { return; }
    div = document.createElement( "div" );
    container = document.createElement( "div" );
    container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;
    left:-9999px";
    body.appendChild( container ).appendChild( div );
    if ( typeof div.style.zoom !== "undefined" ) {
      div.style.cssText =
      "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
      "box-sizing:content-box;display:block;margin:0;border:0;" +
      "padding:1px;width:1px;zoom:1";
      div.appendChild( document.createElement( "div" ) ).style.width = "5px";
      shrinkWrapBlocksVal = div.offsetWidth !== 3;
    }
    body.removeChild( container );
    return shrinkWrapBlocksVal;
  };
} )();
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2018, 22:37
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

продолжение №1
// Количество вызовов: 3
var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );

// Количество вызовов: 7
var cssExpand = [ "Top", "Right", "Bottom", "Left" ];

// Функция, которая определяет виден ли элемент. Количество вызовов: 5
var isHidden = function( elem, el ) { //... };

// Функция обработки различных разрешений экрана. Количество вызовов: 2
function adjustCSS( elem, prop, valueParts, tween ) { //... }

// Количество вызовов: 7
var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { /* функция получения и установления значений коллекции */ }

// Количество вызовов: 3
var rcheckableType = ( /^(?:checkbox|radio)$/i );

// Количество вызовов: 2
var rtagName = ( /<([\w:-]+)/ );
var rscriptType = ( /^$|\/(?:java|ecma)script/i );

// Количество вызовов: 3
var rleadingWhitespace = ( /^\s+/ );

// Количество вызовов: 2
var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" +
"details|dialog|figcaption|figure|footer|header|hgroup|main|" + "mark|meter|nav|output|picture|progress|section|summary|template|time|video";

// Функция хранения контейнеров DocumentFragment. Количество вызовов: 2
function createSafeFragment( document ) { //... }

( function() {
  var div = document.createElement( "div" ),
  fragment = document.createDocumentFragment(),
  input = document.createElement( "input" );
  div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
  support.leadingWhitespace = div.firstChild.nodeType === 3;
  support.tbody = !div.getElementsByTagName( "tbody" ).length;
  support.htmlSerialize = !!div.getElementsByTagName( "link" ).length;
  support.html5Clone = document.createElement( "nav" ).cloneNode( true ).outerHTML 
  !== "<:nav></:nav>";
  input.type = "checkbox";
  input.checked = true;
  fragment.appendChild( input );
  support.appendChecked = input.checked;
  div.innerHTML = "<textarea>x</textarea>";
  support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
  fragment.appendChild( div );
  input = document.createElement( "input" );
  input.setAttribute( "type", "radio" );
  input.setAttribute( "checked", "checked" );
  input.setAttribute( "name", "t" );
  div.appendChild( input );
  support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
  support.noCloneEvent = !!div.addEventListener;
  div[ jQuery.expando ] = 1;
  support.attributes = !div.getAttribute( jQuery.expando );
} )();

// Закрываем теги для поддержки XHTML. Количество вызовов: 12
var wrapMap = { //... };

wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;

// Функция возвращает все значения, связанные с ключем. Количество вызовов: 15
function getAll( context, tag ) { //... }

// Функция отмечающая скрипты как уже оцененные. Количество вызовов: 3
function setGlobalEval( elems, refElements ) { //... }

// Количество вызовов: 1
var rhtml = /<|&#?\w+;/,

// Количество вызовов: 2
    rtbody = /<tbody/i;

/* Функция, меняющая выставленные значения элементов на значения по умолчанию. Количество вызовов: 1 */
function fixDefaultChecked( elem ) { //... }

// Количество вызовов: 2
function buildFragment( elems, context, scripts, selection, ignored ) { /* функция создания фрагмента */ }

( function() {
  var i, eventName,
  div = document.createElement( "div" );
  for ( i in { submit: true, change: true, focusin: true } ) {
    eventName = "on" + i;
    if ( !( support[ i ] = eventName in window ) ) {
      div.setAttribute( eventName, "t" );
      support[ i ] = div.attributes[ eventName ].expando === false;
    }
  }
  div = null;
} )();

// Количество вызовов: 3
var rformElems = /^(?:input|select|textarea)$/i,

// Количество вызовов: 1
    rkeyEvent = /^key/,
    rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,

// Количество вызовов: 2
    rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
    rtypenamespace = /^([^.]*)(?:\.(.+)|)/;

// Количество вызовов: 4
function returnTrue() { return true; }

// Количество вызовов: 6
function returnFalse() { return false; }

// Функция проверки наличия фокуса. Количество вызовов: 2
function safeActiveElement() { //... }

// Количество вызовов: 7
function on( elem, types, selector, data, fn, one ) { /* метод .On() – установка обработчиков событий на выбранные элементы */ };

jQuery.event = { /* создание следующих свойств и методов для управления событиями: add, remove, trigger, dispatch, handlers, fix, props, 

fixHooks, keyHooks, mouseHooks, special, simulate */ };

// Функция удаления событий. Количество вызовов: 3
jQuery.removeEvent = document.removeEventListener ?
  function( elem, type, handle ) {
    if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); }
  } : 
  function( elem, type, handle ) {
    var name = "on" + type;
    if ( elem.detachEvent ) {
      if ( typeof elem[ name ] === "undefined" ) { elem[ name ] = null; 	}
      elem.detachEvent( name, handle );
    }
  };

// Количество вызовов: 7
jQuery.Event = function( src, props ) { /* jQuery.Event() - функция-конструктор, создающая в памяти браузера копию (экземпляр) базового 

DOM-события - объект jQuery.Event */ };

// Количество вызовов: 0
jQuery.Event.prototype = { /* определение свойств экземпляра jQuery.Event в свойстве prototype конструктора объекта jQuery.Event */ }

/* Создание событий mouseenter/leave с помощью меток mouseover/out и отметок времени, чтобы делегирование событий работало в jQuery. То же 

самое для pointerenter/pointerleave и pointerover/pointerout */
jQuery.each( {
  mouseenter: "mouseover",
  mouseleave: "mouseout",
  pointerenter: "pointerover",
  pointerleave: "pointerout"
}, function( orig, fix ) { //... } );

if ( !support.submit ) { /* Делегирование submit в IE */ }
if ( !support.change ) { /* Делегирование change и отметка checkbox/radio в IE */ }
if ( !support.focusin ) { /* Поддержка focusin(focusout) в Firefox, Chrome, Safari */ }

jQuery.fn.extend( { /* добавление следующих свойств и методов в экземпляр jQuery: on, one, off, trigger, triggerHandler */ } );

// Количество вызовов: 1
var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,

    // Количество вызовов: 2
    rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ),
    
    // Количество вызовов: 1
    rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
    rnoInnerhtml = /<script|<style|<link/i,
    rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
    rscriptTypeMasked = /^true\/(.*)/,
    rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
    safeFragment = createSafeFragment( document ),
    
    // Количество вызовов: 3
    fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) );

// Функция контроля за наличием tbody. Количество вызовов: 2
function manipulationTarget( elem, content ) { //... }

/* Функции замены/восстановления типа атрибута элементов для безопасного манипулирования DOM. Количество вызовов: 2 */
function disableScript( elem ) { //... }
function restoreScript( elem ) { //... }

// Функция клонирования события при клонировании элемента. Количество вызовов: 2
function cloneCopyEvent( src, dest ) { //... }

// Функция, исправляющая все проблемы клонирования IE. Количество вызовов: 1
function fixCloneNodeIssues( src, dest ) { //... }

// Количество вызовов: 8
function domManip( collection, args, callback, ignored ) { /* основная функция для манипуляций с DOM */}

// Функция удаления элементов страницы. Количество вызовов: 3
function remove( elem, selector, keepData ) { //... }

jQuery.extend( { /* добавление следующих свойств в объект jQuery: htmlPrefilter, clone, cleanData */ } );

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: domManip, detach, remove, text, append, prepend, before, after, 

empty, clone, html, replaceWith */ } );

/* Создание методов:
 appendTo/prependTo с помощью меток append/prepend - вставлять сразу несколько элементов, 
 insertBefore/insertAfter с помощью before/after - вставлять до/после каждого элемента,
 replaceAll с помощью replaceWith - заменить каждый целевой элемент */
jQuery.each( {
  appendTo: "append",
  prependTo: "prepend",
  insertBefore: "before",
  insertAfter: "after",
  replaceAll: "replaceWith"
}, function( name, original ) { //... } );

// Количество вызовов: 6
var iframe,
    
    // Количество вызовов: 2
    elemdisplay = {
      HTML: "block",
      BODY: "block"
    };

// Вызывается только внутри defaultDisplay. Количество вызовов: 2
function actualDisplay( name, doc ) { //... }

// Функция, определяющая отображаемое по умолчанию значение элемента. Количество вызовов: 4
function defaultDisplay( nodeName ) { //... }

// Количество вызовов: 2
var rmargin = ( /^margin/ );

// Количество вызовов: 4
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );

// Функция обмена, перетаскивания. Количество вызовов: 3
var swap = function( elem, options, callback, args ) { //... };

// Количество вызовов: 8. У Sizzle своя переменная documentElement
var documentElement = document.documentElement;
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2018, 22:39
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

продолжение №2
// Оформительский блок
( function() {
  var pixelPositionVal, pixelMarginRightVal, boxSizingReliableVal,
      reliableHiddenOffsetsVal, reliableMarginRightVal, reliableMarginLeftVal,
      container = document.createElement( "div" ), div = document.createElement( "div" );
  if ( !div.style ) { return; }
  div.style.cssText = "float:left;opacity:.5";
  support.opacity = div.style.opacity === "0.5";
  support.cssFloat = !!div.style.cssFloat;
  div.style.backgroundClip = "content-box";
  div.cloneNode( true ).style.backgroundClip = "";
  support.clearCloneStyle = div.style.backgroundClip === "content-box";
  container = document.createElement( "div" );
  container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
    "padding:0;margin-top:1px;position:absolute";
  div.innerHTML = "";
  container.appendChild( div );
  support.boxSizing = div.style.boxSizing === "" || div.style.MozBoxSizing === "" ||
    div.style.WebkitBoxSizing === "";
  jQuery.extend( support, {
    reliableHiddenOffsets: function() {
      if ( pixelPositionVal == null ) { computeStyleTests(); }
      return reliableHiddenOffsetsVal;
    },
    boxSizingReliable: function() {
      if ( pixelPositionVal == null ) { computeStyleTests(); }
      return boxSizingReliableVal;
    },
    pixelMarginRight: function() {
      if ( pixelPositionVal == null ) { computeStyleTests(); }
      return pixelMarginRightVal;
    },
    pixelPosition: function() {
      if ( pixelPositionVal == null ) { computeStyleTests(); }
      return pixelPositionVal;
    },
    reliableMarginRight: function() {
      if ( pixelPositionVal == null ) { computeStyleTests(); }
      return reliableMarginRightVal;
    },
    reliableMarginLeft: function() {
      if ( pixelPositionVal == null ) { computeStyleTests(); }
      return reliableMarginLeftVal;
    }
  } );
  function computeStyleTests() {
    var contents, divStyle, documentElement = document.documentElement;
    documentElement.appendChild( container );
    div.style.cssText = "-webkit-box-sizing:border-box;box-sizing:border-box;" +
      "position:relative;display:block;" +
      "margin:auto;border:1px;padding:1px;" + "top:1%;width:50%";
    pixelPositionVal = boxSizingReliableVal = reliableMarginLeftVal = false;
    pixelMarginRightVal = reliableMarginRightVal = true;
    if ( window.getComputedStyle ) {
      divStyle = window.getComputedStyle( div );
      pixelPositionVal = ( divStyle || {} ).top !== "1%";
      reliableMarginLeftVal = ( divStyle || {} ).marginLeft === "2px";
      boxSizingReliableVal = ( divStyle || { width: "4px" } ).width === "4px";
      div.style.marginRight = "50%";
      pixelMarginRightVal = ( divStyle || { marginRight: "4px" } ).marginRight === "4px";
      contents = div.appendChild( document.createElement( "div" ) );
      contents.style.cssText = div.style.cssText =	
        "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
        "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
      contents.style.marginRight = contents.style.width = "0";
      div.style.width = "1px";
      reliableMarginRightVal =
      !parseFloat( ( window.getComputedStyle( contents ) || {} ).marginRight );
      div.removeChild( contents );
    }
    div.style.display = "none";
    reliableHiddenOffsetsVal = div.getClientRects().length === 0;
    if ( reliableHiddenOffsetsVal ) {
      div.style.display = "";
      div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
      div.childNodes[ 0 ].style.borderCollapse = "separate";
      contents = div.getElementsByTagName( "td" );
      contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";
      reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
      if ( reliableHiddenOffsetsVal ) {
        contents[ 0 ].style.display = "";
        contents[ 1 ].style.display = "none";
        reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
      }
    }
    documentElement.removeChild( container );
  }
} )();

// Количество вызовов: 7
var getStyles,

    // Количество вызовов: 8
    curCSS,

    // Количество вызовов: 1
    rposition = /^(top|right|bottom|left)$/;

// Функции получения реальных значений CSS свойств
// Для браузеров, поддерживающих метод getComputedStyle
if ( window.getComputedStyle ) {
  //...
// Для браузеров, поддерживающих метод currentStyle, альтернатива getComputedStyle
} else if ( documentElement.currentStyle ) { 
  //...
}

// Функция для работы с CSS хуками. Количество вызовов: 3
function addGetHookIf( conditionFn, hookFn ) { //... }

var 
    // Количество вызовов: 3
    ralpha = /alpha\([^)]*\)/i,

    // Количество вызовов: 1
    ropacity = /opacity\s*=\s*([^)]*)/i,
    rdisplayswap = /^(none|table(?!-c[ea]).+)/,
    rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
    cssShow = { position: "absolute", visibility: "hidden", display: "block" },

    // Количество вызовов: 2
    cssNormalTransform = { letterSpacing: "0", fontWeight: "400" },
    cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
    emptyStyle = document.createElement( "div" ).style;
Ответить с цитированием
  #4 (permalink)  
Старый 23.11.2018, 22:40
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

продолжение №3
// Функция, получающая CSS-свойство, сопоставленное с потенциальным префиксом свойства поставщика. Количество вызовов: 2
function vendorPropName( name ) { //... }

// Функция, скрывающая/отображающая элементы. Количество вызовов: 2
function showHide( elements, show ) { //... }

// Функция, устанавливающая положительные числа. Количество вызовов: 2
function setPositiveNumber( elem, value, subtract ) { //... }

/* Функция, вычисляющая прибавку в ширине или высоте для исправления нерелевантных стилей. Количество вызовов: 2 */
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { //... }

// Функция, вычисляющая реальную ширину/высоту элемента. Количество вызовов: 2
function getWidthOrHeight( elem, name, extra ) { //... }

jQuery.extend( { /* добавление следующих свойств в объект jQuery: cssHooks, cssNumber, cssProps, style, css */ } );

// Создание CSS-хуков ширины и высоты.
jQuery.each( [ "height", "width" ], function( i, name ) { //... } );

// CSS-хук для кросс-браузерной поддержки прозрачности
if ( !support.opacity ) { //... }

// CSS-хук для marginRight
jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
  function( elem, computed ) {
    //...
  }
);

// CSS-хук для marginLeft
jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
  function( elem, computed ) {
    //...
  }
);

// Создание CSS-хуков, используемых анимацией для расширения свойств
jQuery.each( {
  margin: "",
  padding: "",
  border: "Width"
}, function( prefix, suffix ) { //... } );

jQuery.extend( { /* добавление следующих свойств в объект jQuery: css, show, hide, toggle */ } );

/* Функция-конструктор, создающая в памяти браузера копию (экземпляр) базового объекта экземпляра jQuery - объект Tween. Количество вызовов: 

12 */
function Tween( elem, options, prop, end, easing ) { 
  return new Tween.prototype.init( elem, options, prop, end, easing );
}

jQuery.Tween = Tween;
/* Для освобождения памяти от дубликатов методов. Определение свойств объекта Tween в свойстве prototype объекта Tween конструктора объекта 

jQuery. Количество вызовов: 3 */
Tween.prototype = { //... };

/* Для освобождения памяти от дубликатов методов. Копирование свойств из свойства prototype объекта Tween конструктора объекта jQuery в 

свойство prototype свойства init свойства prototype объекта Tween конструктора объекта jQuery. Количество вызовов: 0 */
Tween.prototype.init.prototype = Tween.prototype;

/* Функция, меняющая процесс получения и установки значения указанного свойства только во время анимации. Количество вызовов: 5 */
Tween.propHooks = { //... };

// Исправление на случай неработающего скроллинга. Количество вызовов: 0
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { //... };

// Функция плавности. Количество вызовов: 3
jQuery.easing = { //... };

// Очередь предстоящих функций. Количество вызовов: 20
jQuery.fx = Tween.prototype.init;

// Функция вычисления шага анимации. Количество вызовов: 2
jQuery.fx.step = {};

var
    // Количество вызовов: 6
    fxNow,

    // Количество вызовов: 4
    timerId,

    // Количество вызовов: 1
    rfxtypes = /^(?:toggle|show|hide)$/,
    rrun = /queueHooks$/;

// Функция синхронизации анимаций, созданных синхронно. Количество вызовов: 2
function createFxNow() {
  window.setTimeout( function() { fxNow = undefined; } );
  return ( fxNow = jQuery.now() );
}

// Функция, создающая параметры для стандартной анимации. Количество вызовов: 4
function genFx( type, includeWidth ) { //... }

// Функция создания промежуточных кадров. Количество вызовов: 3
function createTween( value, prop, animation ) { //... }

// Функция предварительной обработки анимации. Количество вызовов: 1
function defaultPrefilter( elem, props, opts ) { //... }

// Функция настройки и фильтрации анимации. Количество вызовов: 1
function propFilter( props, specialEasing ) { //... }

/* Функция, контролирующая процесс анимации, для повышения отказоустойчивости. Количество вызовов: 10 */
function Animation( elem, properties, options ) { //... }

jQuery.Animation = jQuery.extend( Animation, { /* добавление следующих анимационного типа свойств в объект jQuery: tweeners, tweener, 

prefilters, prefilter */ } );

/* Функция, задающая следующие свойства анимации, отличные от значений по умолчанию: длительность, плавность и очередь. Количество вызовов: 1 

*/
jQuery.speed = function( speed, easing, fn ) { //... };

jQuery.fn.extend( { /* добавление следующих анимационного типа свойств в экземпляр jQuery: fadeTo, animate, stop, finish */ } );

// Создание параметров для стандартной анимации toggle, show, hide.
jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { //... } );

/* Создание ярлыков slideDown, slideUp, slideToggle, fadeIn, fadeOut, fadeToggle  для настраиваемых анимаций toggle, show, hide. */
jQuery.each( {
  slideDown: genFx( "show" ),
  slideUp: genFx( "hide" ),
  slideToggle: genFx( "toggle" ),
  fadeIn: { opacity: "show" },
  fadeOut: { opacity: "hide" },
  fadeToggle: { opacity: "toggle" }
}, function( name, props ) { //... } );

// Количество вызовов: 6
jQuery.timers = [];

/* Функция, отвечающая за фактическое исполнение анимации. Выполняет поочередно каждый таймер, сохраняя свое место, когда он удаляет 

законченную анимацию. Количество вызовов: 1 */
jQuery.fx.tick = function() { //... };

// Функция, записывающая объекты timer в массив jQuery.timers. Количество вызовов: 1
jQuery.fx.timer = function( timer ) { //... };

// Продолжительность одного кадра анимации. Количество вызовов: 1
jQuery.fx.interval = 13;

// Функция, создающая точку отсчета для работы функции jQuery.fx.tick. Количество вызовов: 1
jQuery.fx.start = function() {
  if ( !timerId ) {
    timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
  }
};

/* Функция отключения анимационного объекта, если его функция jQuery.fx.tick больше не находится в массиве jQuery.timers. Количество вызовов: 

1 */
jQuery.fx.stop = function() {
  window.clearInterval( timerId );
  timerId = null;
};

// Функция, устанавливающая скорость анимации. Количество вызовов: 4
jQuery.fx.speeds = {
  slow: 600,
  fast: 200,
  _default: 400
};

/* Based off of the plugin by Clint Helfers, with permission. Функция, устанавливающая задержку перед выполнением очередной функции в 

очереди. Количество вызовов: 0 */
jQuery.fn.delay = function( time, type ) { //... };

// Кросс-браузерное тестирование.
( function() {
  var a,
      input = document.createElement( "input" ),
      div = document.createElement( "div" ),
      select = document.createElement( "select" ),
      opt = select.appendChild( document.createElement( "option" ) );
  div = document.createElement( "div" );
  div.setAttribute( "className", "t" );
  div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
  a = div.getElementsByTagName( "a" )[ 0 ];
  input.setAttribute( "type", "checkbox" );
  div.appendChild( input );
  a = div.getElementsByTagName( "a" )[ 0 ];
  a.style.cssText = "top:1px";
  support.getSetAttribute = div.className !== "t";
  support.style = /top/.test( a.getAttribute( "style" ) );
  support.hrefNormalized = a.getAttribute( "href" ) === "/a";
  support.checkOn = !!input.value;
  support.optSelected = opt.selected;
  support.enctype = !!document.createElement( "form" ).enctype;
  select.disabled = true;
  support.optDisabled = !opt.disabled;
  input = document.createElement( "input" );
  input.setAttribute( "value", "" );
  support.input = input.getAttribute( "value" ) === "";
  input.value = "t";
  input.setAttribute( "type", "radio" );
  support.radioValue = input.value === "t";
} )();

// Количество вызовов: 1
var rreturn = /\r/g,
    rspaces = /[\x20\t\r\n\f]+/g;

jQuery.fn.extend( { // добавление следующих свойств в экземпляр jQuery: val } );

jQuery.extend( { // добавление следующих свойств в объект jQuery: valHooks } );

// Переопределение поведения по умолчанию для элементов radio и checkbox.
jQuery.each( [ "radio", "checkbox" ], function() { //... } );

// Количество вызовов: 6
var nodeHook,

    // Количество вызовов: 2
    boolHook,

    // Количество вызовов: 10
    attrHandle = jQuery.expr.attrHandle,

    // Количество вызовов: 3
    ruseDefault = /^(?:checked|selected)$/i,

    // Количество вызовов: 7
    getSetAttribute = support.getSetAttribute,

    // Количество вызовов: 4
    getSetInput = support.input;

jQuery.fn.extend( { // добавление следующих свойств в экземпляр jQuery: attr, removeAttr } );

jQuery.extend( { /* добавление следующих свойств в объект jQuery: attr, attrHooks, removeAttr */ } );

// Хуки для boolean атрибутов.
boolHook = { //... };
Ответить с цитированием
  #5 (permalink)  
Старый 23.11.2018, 22:41
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

продолжение №4
// Заполнение значений boolean атрибутов.
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { //... } );

// Исправление oldIE attroperties
if ( !getSetInput || !getSetAttribute ) { //... }

/* Блок если не поддерживается getSetAttribute (браузеры IE6 / 7 не поддерживает получение / установку некоторых атрибутов с помощью get / 

setAttribute) */
if ( !getSetAttribute ) { //... }

// Обеспечение кросс-браузерности, если не поддерживается style.
if ( !support.style ) { //... }

// Количество вызовов: 1
var rfocusable = /^(?:input|select|textarea|button|object)$/i,
    rclickable = /^(?:a|area)$/i;

jQuery.fn.extend( { // добавление следующих свойств в экземпляр jQuery: prop, removeProp } );

jQuery.extend( { // добавление следующих свойств в объект jQuery: prop, propHooks, propFix } );

/* Обеспечение кросс-браузерности, если не поддерживается hrefNormalized. (Для некоторых атрибутов требуется специальный вызов в IE). */
if ( !support.hrefNormalized ) { //... }

// Обеспечение кросс-браузерности, если не поддерживается optSelected.
if ( !support.optSelected ) { //... }

// Нормализация названий свойств.
jQuery.each( [
  "tabIndex",
  "readOnly",
  "maxLength",
  "cellSpacing",
  "cellPadding",
  "rowSpan",
  "colSpan",
  "useMap",
  "frameBorder",
  "contentEditable"
], function() {
  jQuery.propFix[ this.toLowerCase() ] = this;
} );

// Обеспечение кросс-браузерности, если не поддерживается enctype (для IE6/7 encoding).
if ( !support.enctype ) {
	jQuery.propFix.enctype = "encoding";
}

// Количество вызовов: 3
var rclass = /[\t\r\n\f]/g;

/* Функция устанавливает указанному атрибуту, при наличии, значение class. Количество вызовов: 7 */
function getClass( elem ) {
  return jQuery.attr( elem, "class" ) || "";
}

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: addClass, removeClass, toggleClass, hasClass */ } );

// Возвращает экземпляр jQuery с включением только указанных атрибутов.
jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " +
    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
    "change select submit keydown keypress keyup error contextmenu" ).split( " " ),
  function( i, name ) { //... } );

jQuery.fn.extend( { // добавление следующих свойств в экземпляр jQuery: hover } );

// Количество вызовов: 1
var location = window.location;

// Количество вызовов: 3
var nonce = jQuery.now();
var rquery = ( /\?/ );

// Количество вызовов: 1
var rvalidtokens =/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u
  [\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;

// Функция парсинга json-данных. Количество вызовов: 2
jQuery.parseJSON = function( data ) { //... };

// Кросс-браузерный xml парсинг. Количество вызовов: 1
jQuery.parseXML = function( data ) { //... };

var
    // Количество вызовов: 1
    rhash = /#.*$/,

    // Количество вызовов: 2
    rts = /([?&])_=[^&]*/,

    // Количество вызовов: 1
    rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
    rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
    rnoContent = /^(?:GET|HEAD)$/,
    rprotocol = /^\/\//,
    
    // Количество вызовов: 2
    rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,

    // Количество вызовов: 2
    prefilters = {},
    transports = {},

    // Избежать последовательности символов начала комментариев. Количество вызовов: 2
    allTypes = "*/".concat( "*" ),

    // Расположение документа. Количество вызовов: 3
    ajaxLocation = location.href,

    // Разбиение расположения на части. Количество вызовов: 6
    ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];

// Функция-конструктор для jQuery.ajaxPrefilter и jQuery.ajaxTransport Количество вызовов: 2 
function addToPrefiltersOrTransports( structure ) { //... }

// Основная функция контроля для prefilters и transports. Количество вызовов: 2
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { //... }

/* Функция стандартизации параметров функции ajax, чтобы увидеть, какие параметры не назначены. Количество вызовов: 3 */
function ajaxExtend( target, src ) { //... }

/* Функция обработки ответов на запрос ajax Находит правильный тип данных (посредник между типом контента и ожидаемым типом данных и 

возвращает соответствующий ответ). Количество вызовов: 1 */
function ajaxHandleResponses( s, jqXHR, responses ) { //... }

// Функция сетевых преобразований с учетом запроса и исходного ответа. Количество вызовов: 1
function ajaxConvert( s, response, jqXHR, isSuccess ) { //... }

jQuery.extend( { /* добавление следующих свойств в объект jQuery: active, lastModified, etag, ajaxSettings, ajaxSetup, ajaxPrefilter, 

ajaxTransport, ajax, getJSON, getScript */ } );

// Расширение параметров get/post запросов.
jQuery.each( [ "get", "post" ], function( i, method ) { //... } );

// Функция динамической загрузки скрипта. Количество вызовов: 2
jQuery._evalUrl = function( url ) {
  return jQuery.ajax( {
    url: url,
    type: "GET",
    dataType: "script",
    cache: true,
    async: false,
    global: false,
    "throws": true
  } );
};

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: wrapAll, wrapInner, wrap, unwrap */ } );

// Функция, определяющая тип отображения элемента. Количество вызовов: 1
function getDisplay( elem ) {
  return elem.style && elem.style.display || jQuery.css( elem, "display" );
}

// Функция, выявляющая отсоединенные или скрытые элементы. Количество вызовов: 1
function filterHidden( elem ) { //... }

// Функция проверки скрытого состояния элемента. Количество вызовов: 1
jQuery.expr.filters.hidden = function( elem ) {
  return support.reliableHiddenOffsets() ?
    ( elem.offsetWidth <= 0 && elem.offsetHeight <= 0 && !elem.getClientRects().length ) :  
    filterHidden( elem );
};

// Функция проверки не скрытого состояния элемента. Количество вызовов: 0
jQuery.expr.filters.visible = function( elem ) { 
  return !jQuery.expr.filters.hidden( elem );
};

// Количество вызовов: 1
var r20 = /%20/g,
    rbracket = /\[\]$/,

// Количество вызовов: 2
rCRLF = /\r?\n/g,

// Количество вызовов: 1
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
rsubmittable = /^(?:input|select|textarea|keygen)/i;

// Функция преобразования объекта в строку. Количество вызовов: 1
function buildParams( prefix, obj, traditional, add ) { //... }

/* Функция сериализации массива элементов формы или набора ключей/значений в строку ajax-запроса. Количество вызовов: 2 */
jQuery.param = function( a, traditional ) { //... };

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: serialize, serializeArray */ } );
Ответить с цитированием
  #6 (permalink)  
Старый 23.11.2018, 22:42
Новичок на форуме
Отправить личное сообщение для taksebe Посмотреть профиль Найти все сообщения от taksebe
 
Регистрация: 23.11.2018
Сообщений: 9

завершительное сообщение
// Создание объекта запроса с учетом кросс-браузерности. Количество вызовов: 1
jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ? function() {
  if ( this.isLocal ) { return createActiveXHR(); }
  if ( document.documentMode > 8 ) { return createStandardXHR(); 	}
  return /^(get|post|head|put|delete|options)$/i.test( this.type ) &&
    createStandardXHR() || createActiveXHR();
} : createStandardXHR;

// Количество вызовов: 1
var xhrId = 0,

    // Количество вызовов: 4
    xhrCallbacks = {},

    // Количество вызовов: 2
    xhrSupported = jQuery.ajaxSettings.xhr();

/* Отмена открытых запросов, если страница не загрузилась по каким-либо причинам, либо при закрытии окна (вкладки) браузера. */
if ( window.attachEvent ) {
  window.attachEvent( "onunload", function() {
    for ( var key in xhrCallbacks ) { xhrCallbacks[ key ]( undefined, true ); }
  } );
}

// Для проверки поддержки браузером кросс-доменных запросов. Количество вызовов: 1
support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );

// Для проверки поддержки браузером технологии ajax. Количество вызовов: 1
xhrSupported = support.ajax = !!xhrSupported;


if ( xhrSupported ) {

// Функция, создающая объект для обработки ajax-запроса Количество вызовов: 1
  jQuery.ajaxTransport( function( options ) { //... }
}

// Функция создания объекта XHR. Количество вызовов: 3
function createStandardXHR() {
  try {
    return new window.XMLHttpRequest();
  } catch ( e ) {}
}

// Функция создания объекта XHR. Количество вызовов: 2
function createActiveXHR() {
  try {
    return new window.ActiveXObject( "Microsoft.XMLHTTP" );
  } catch ( e ) {}
}

/* Установка значений по умолчанию для следующих настроек ajax-запроса: accepts, contents, converters */
jQuery.ajaxSetup( { //... } );

// Настройка индивидуального и глобального кэша для ajax-запросов типа script.
jQuery.ajaxPrefilter( "script", function( s ) {
  if ( s.cache === undefined ) { s.cache = false; }
  if ( s.crossDomain ) {
    s.type = "GET";
    s.global = false;
  }
} );

// Создание объекта для обработки ajax-запроса типа script
jQuery.ajaxTransport( "script", function( s ) { //... } );

// Количество вызовов: 2
var oldCallbacks = [],

    // Количество вызовов: 3
    rjsonp = /(=)\?(?=&|$)|\?\?/;

// Установка значений по умолчанию для следующих настроек ajax-запроса: jsonp, jsonpCallback
jQuery.ajaxSetup( {
  jsonp: "callback",
  jsonpCallback: function() {
    var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
        this[ callback ] = true;
    return callback;
  }
} );

// Выявление, нормализация и установка callbacks для ajax-запросов типа json, jsonp
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { //... }

// Функция разбора строки в массив узлов DOM. Количество вызовов: 2
jQuery.parseHTML = function( data, context, keepScripts ) { //... };

// Сохранение копии прежнего метода загрузки. Количество вызовов: 2
var _load = jQuery.fn.load;

// Функция загрузки URL на страницу. Метод .load(). Количество вызовов: 0
jQuery.fn.load = function( url, params, callback ) { //... };

/* Присоединение для общепринятых ajax-событий функции обработчика для одного или нескольких событий */
jQuery.each( [
  "ajaxStart",
  "ajaxStop",
  "ajaxComplete",
  "ajaxError",
  "ajaxSuccess",
  "ajaxSend"
], function( i, type ) {
  jQuery.fn[ type ] = function( fn ) { return this.on( type, fn ); };
} );

// Функция проверки наличия элемента в jQuery.timers. Количество вызовов: 0
jQuery.expr.filters.animated = function( elem ) {
  return jQuery.grep( jQuery.timers, function( fn ) {
    return elem === fn.elem;
  } ).length;
};

// Функция, получающая корреспондирующее с элементом окно. Количество вызовов: 2
function getWindow( elem ) {
  return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 ? 
    elem.defaultView || elem.parentWindow : false;
}

/* Функция, устанавливающая местоположение выбранного элемента относительно границ текущего документа. Количество вызовов: 1 */
jQuery.offset = { //... };

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: offset, position, offsetParent */ } );

// Создание scrollLeft и scrollTop методов
jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { //... } );

// CSS-хуки для свойств top и left
jQuery.each( [ "top", "left" ], function( i, prop ) { //... } );

// Создание innerHeight, innerWidth, height, width, outerHeight и outerWidth методов
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { //... } );

jQuery.fn.extend( { /* добавление следующих свойств в экземпляр jQuery: bind, unbind, delegate, undelegate */ } );

// Функция, определяющая количество выбранных элементов. Метод .size() Количество вызовов: 0
jQuery.fn.size = function() { return this.length; };

// Замена функции jQuery.fn.andSelf, которая больше не может использоваться
jQuery.fn.andSelf = jQuery.fn.addBack;

/* Проверка наличия js-скрипта «require.js» (библиотеки управления зависимостями JavaScript для улучшения скорости и качества кода) */
if ( typeof define === "function" && define.amd ) {
  define( "jquery", [], function() { return jQuery; } );
}

// Карта к jQuery на случай перезаписи. Количество вызовов: 1
var _jQuery = window.jQuery,

    // Карта к $ на случай перезаписи. Количество вызовов: 0
    _$ = window.$;

/* Функция, отключающая использование $ в качестве переменной jQuery, без потери функциональности библиотеки jQuery. Количество вызовов: 0 */
jQuery.noConflict = function( deep ) {
  if ( window.$ === jQuery ) { window.$ = _$; }
  if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; }
  return jQuery;
};

/* Зачастую если noGlobal является undefined, то jQuery добавит себя к глобальному window объект, за исключением случая когда загрузчик 

модуля – CommonJS */
if ( !noGlobal ) { window.jQuery = window.$ = jQuery; }

// Завершение блока Модуля
return jQuery;
})

// Закрытие круглых скобок, в которые обернута IIFE.
);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт Jquery перестал верно работать в Chrome swest jQuery 2 12.12.2014 19:57
Динамический подсчет в таблице muraig jQuery 5 11.10.2014 16:54
есть jquery скрипт, нужно понять где формируется url softax Работа 13 11.07.2014 13:46