2015-02-03 2 views
5

Я изменяю размер div с jQuery, изменяемый по размеру, и я только хочу изменить его высоту.Не сохраняйте пропорции с jQuery, изменяя размер при удерживании сдвига

мне удалось только изменить размер при перемещении нижнего помощника:

$('div').resizable({ 
    handles: 's', 
}); 

Но если я держу клавишу переключения, ширина меняется. См. http://jsfiddle.net/6p20qjmr/3/

Как отключить это поведение?

Редактировать: Ширина контейнера div может измениться после первоначального изменения размера звонка.

ответ

2

я найти способ добиться того, что я хочу с помощью resize параметра и переустановка ширины после каждого изменения размера события:

$(".resize").resizable({ 
    handles: 's', 
    resize: function() { 
     $(this).css('width', ''); 
    } 
}); 

См http://jsfiddle.net/6p20qjmr/4/

2
$(function() { 
    var $elt = $(".resize"); 
    var width = $elt.width(); 
    $elt.resizable({ 
     handles: 's', 
     maxWidth: width, 
     minWidth: width 
    }); 
}); 

Это может быть не лучшее решение, но я не очень хорошо разбираюсь в изменяемых размерах JQuery UI. Я даже не уверен, почему смена сдвига меняет функциональность. Если бы вы могли это объяснить, я мог бы предложить лучшее решение, которое кажется менее взломанным.

Fiddle: http://jsfiddle.net/6p20qjmr/

+0

Это может быть решением, но мои div может меняться ... - Существует строка jQuery UI, которая поддерживает соотношение отношения: '' if (this._aspectRatio || b.shiftKey) '' –

+0

@Tyrius Я не уверен, что понимаю. Определив 's' как единственный вариант, не означает ли это, что вы должны только сделать элемент выше? – thatidiotguy

+0

Клавиша 'Shift' позволяет использовать' aspectRatio: true'; Однако, даже если я использую 'aspectRatio: false', символ' Shift' переопределяет его. – Runcorn