初始化后无法应用JqueryUI可调整大小的AspectRatio?

Alv*_*vin 10 jquery jquery-ui jquery-ui-resizable

我试图在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 );
    }
});
Run Code Online (Sandbox Code Playgroud)

我发现了一个3年前的错误报告,看起来它仍然没有得到修复,尽管标记它至关重要.http://bugs.jqueryui.com/ticket/4186

解决方法不适用于最新版本.有任何想法吗?

编辑:经过大量的错误报告后,这是一个解决方法:

$(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"]));
});
Run Code Online (Sandbox Code Playgroud)

将其粘贴到您的JavaScript脚本部分.希望它可以帮助有类似问题的人!

UnL*_*oCo 11

这对我来说没有修补

$('#resizable')
  .resizable('option', 'aspectRatio', false)
  .data('uiResizable')._aspectRatio = false;
Run Code Online (Sandbox Code Playgroud)

这部分.data('uiResizable')._aspectRatio = false;来救援


Nie*_*els 3

我不知道它是否会起作用或会发生什么。但你可以尝试这样的事情。

$(function(){
    var settings = {
        aspectRatio : .75  
    };
    $("#tadaa").resizable(settings);

    $("input").change(function(){
        if($(this).is(":checked"))
        {

            $("#tadaa").resizable( "destroy" );
            $("#tadaa").resizable();
        }
        else  
        {
            $("#tadaa").resizable( "destroy" );
            $("#tadaa").resizable(settings);
        }   
    });
});
Run Code Online (Sandbox Code Playgroud)

现场演示,目前只有底部可拖动元素的样式可供使用,水平 div 没有样式。

http://jsfiddle.net/t6xFN/1/