Кажется, что jQuery UI 1.9 или выше восстанавливает первоначальный размер после эффекта размера. Мой пример кода здесь:
$(function () {
$('.circle').click(function () {
$(this).effect("size",
{ to: {width: 50,height: 50}, origin: ['bottom', 'right'] },
1000, function () {
$(this).css({'background': 'blue' });
});
});
});
В принципе, если я выберу jQuery UI 1.8.18 (под jQuery 1.7.2), тогда форма уменьшится до нужного размера и останется там. Но позже пользовательский интерфейс jQuery восстановит форму.
Я также заметил, что опции "origin" не вступили в силу для более высокого пользовательского интерфейса jQuery. Например, я использовал
origin: ['bottom', 'right']
Что не повлияло на jQuery UI 1.9 или более поздние версии.
Итак, как подавить "восстановление" и сделать "происхождение" эффективным в jQuery UI 1.8 или новее?
выполненная новая функция, что будет делать то, что вам нужна скрипка
я изменил с effect
на animate
, а modifiyng css top + left, чтобы получить исходную функциональность, обратите внимание, что по умолчанию он переходит в верхний левый. ех.
origin => ['bottom']
же, как ['bottom','left']
origin => ['right']
то же, что и ['top','right']
т.д.
function size(object,to, origin, duration, callback){
var leftResult = '+=0';
var topResult = '+=0';
if (origin != null && origin.length != 0){
if ($.inArray('right', origin) >= 0){
leftResult= '+='+to.width;
}
if ($.inArray('bottom', origin) >= 0){
topResult= '+='+to.height;
}
}
$(object).animate({
height: to.height,
width: to.width,
left: leftResult,
top: topResult
}, duration, function() {
if (typeof callback == "function") callback($(object));
});
}
просто добавьте подтверждение в аргументы или измените обратный вызов по мере необходимости.