2013-10-16 66 views
1

我使用jQuery UI可調整大小模塊,看起來像它不反應,當我嘗試傳遞一個選項後,它被初始化。jQueryUI可調整大小沒有響應選項變化

所以,如果我初始化元素:

$('.blabla').resizable(); 

,然後嘗試添加選項:

$('.blabla').resizable("option","aspectRatio",true); 

什麼也沒有發生。通過檢查選項,我發現其中一些工作,一些不工作......這是什麼問題?當然,'aspectRatio'不起作用,'幽靈'起作用。

下面是簡單的jsfiddle: http://jsfiddle.net/k8gY8/1/

+0

好像[錯誤](http://bugs.jqueryui.com/ticket/4186) –

回答

0

有一個在jQuery UI的一個bug。尤其是那個人差不多有5(5 .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; 
     } 
    }; 
})(); 
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的頂部將工作。

演示:http://jsfiddle.net/ajYgM/

+0

呵呵,我在2分鐘前找到了同一張票:)但無論如何,謝謝! –

+0

不錯,有點舊了,它似乎不是有史以來最快的補丁問題:-) –