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而不删除任何元素?
答案 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);
})