Jquery resizable destroy删除句柄元素

时间:2014-10-20 23:52:15

标签: javascript jquery

handles: {
    'nw': '.nw',
    'ne': '.ne',
    'sw': '.sw',
    'se': '.se',
    'n': '.n',
    'e': '.e',
    's': '.s',
    'w': '.w'
},aspectRatio: true

//Button click change resizable aspectRatio to false
$().resizable("destroy").resizable({
    handles: {
        'nw': '.nw',
        'ne': '.ne',
        'sw': '.sw',
        'se': '.se',
        'n': '.n',
        'e': '.e',
        's': '.s',
        'w': '.w'
    },aspectRatio: false

});

我有一个按钮点击会将可调整大小的aspectRatio更改为false。

我的问题是当我使用resizable destroy时,它会删除所有句柄元素。

任何人都知道如何更新resizable而不删除任何元素?

1 个答案:

答案 0 :(得分:1)

据我所知,没有直接的方法可以做到这一点。要实现此功能,您可能需要编辑插件并在其中添加两行代码。您可以为aspectRatio创建一个全局变量,并告诉代码引用它并进行重新调整大小。

jquery-ui.js文件中搜索以下代码(使用版本1.11.2进行测试)

if (this._aspectRatio || event.shiftKey) {
    data = this._updateRatio(data, event);
}

并将其替换为

if(typeof window.globalAspectRatio != "undefined")
    this._aspectRatio = !!(window.globalAspectRatio);

if (this._aspectRatio || event.shiftKey) {
    data = this._updateRatio(data, event);
}

现在,如果window.globalAspectRatio已设置且不为null,那么aspectRatio将为true,否则它将为false。 您可以像

一样使用它
$('button').click(function(){
    window.globalAspectRatio = !(window.globalAspectRatio);
})