Невозможно применить JQueryUI Resizable AspectRatio после инициализации?

Я пытался динамически включать / выключать соотношение сторон в JQueryUI с изменяемым размером, однако даже после установки для параметра значения false соотношение сторон сохраняется. Ниже приведен код, с которым я сейчас работаю:

$('#aspect_check').click( function() {
    var ischecked = $('#aspect_check').prop('checked');
    if (ischecked) {
    $( "#resizable" ).resizable( "option", "aspectRatio", .75);
    } else {
        $( "#resizable" ).resizable( "option", "aspectRatio", false );
    }
});

Я нашел отчет об ошибке 3-х летней давности, который, похоже, до сих пор не исправлен, несмотря на то, что он отмечен как критический. http://bugs.jqueryui.com/ticket/4186

Обходные пути не работают с последними версиями. Есть идеи?

Edit: После просмотра большого количества отчетов об ошибках, вот решение:

$(function() {
$.extend($.ui.resizable.prototype, (function (orig) {
    return {
        _mouseStart: function (event) {
            this._aspectRatio = !!(this.options.aspectRatio);
            return(orig.call(this, event));
        }
    };
})($.ui.resizable.prototype["_mouseStart"]));
});

Вставьте его в свой раздел сценария javascript. Надеюсь, это поможет кому-то с подобной проблемой!

10
задан Cœur 29 July 2017 в 13:48
поделиться