我使用jQuery UI Resizable模块,看起来当我尝试在初始化后传递一个选项时它没有反应。
所以如果我初始化元素:
$('.blabla').resizable();
然后尝试添加选项:
$('.blabla').resizable("option","aspectRatio",true);
什么都没发生。通过逐个选项检查,我发现其中一些有效,一些没有......问题是什么?当然,'aspectRatio'不起作用,'ghost'也可以。
这是简单的jsfiddle: http://jsfiddle.net/k8gY8/1/
答案 0 :(得分:1)
这似乎是一个众所周知的问题:http://bugs.jqueryui.com/ticket/4186
因此,根据建议,您可以覆盖原型mouseStart
事件:
$(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"]));
});
在您的代码顶部,il将起作用。
答案 1 :(得分:0)
Jquery UI中存在一个错误。特别是,那个人差不多5(五个!!!)岁,并在jquery ui论坛上多次报道。 这是门票: http://bugs.jqueryui.com/ticket/4186
目前的解决方法是:
(function() {
var oldSetOption = $.ui.resizable.prototype._setOption;
$.ui.resizable.prototype._setOption = function(key, value) {
oldSetOption.apply(this, arguments);
if (key === "aspectRatio") {
this._aspectRatio = !!value;
}
};
})();