Из того, что я вижу, глядя на код пользовательского интерфейса jQuery, .swap()
напрямую не вызывается им, единственное место в самой структуре jQuery, которое напрямую использует .swap()
, - это вызовы .height()
и .width()
получение вычисленной высоты / ширины элемента.
То, что он делает для расчета размеров, когда он недоступен непосредственно из браузера, временно меняет стиль на следующее:
cssShow = { position: "absolute", visibility: "hidden", display: "block" };
Затем выполняет обычную внутреннюю функцию getWH()
, находясь в этом измененном состоянии стиля, и восстанавливает.
Частичный код, заимствованный из jQuery:
jQuery.each(["height", "width"], function( i, name ) {
jQuery.cssHooks[ name ] = {
get: function( elem, computed, extra ) {
var val;
if ( computed ) {
if ( elem.offsetWidth !== 0 ) {
val = getWH( elem, name, extra );
} else {
jQuery.swap( elem, cssShow, function() {
val = getWH( elem, name, extra );
});
}
// etc.
jQuery UI везде использует функции height()
и width()
, поэтому неудивительно, что функция .swap()
занимает высокое место в профиле.