2011-08-11 101 views
0

我想弄清楚如何修復jQueryUI 1.8.5和jQuery 1.5.1的代碼this,並且運氣不好,這種高級的東西,任何人都可以伸出援手嗎?jQueryUI.extend woes

問題是與下面的代碼:

$.extend($.ui.boxer, { 
    defaults: $.extend({}, $.ui.mouse.defaults, { 
     appendTo: 'body', 
     distance: 0 
    }) 
}); 

它不初始化appendTo,由於某種原因選擇距離值。

+0

哇,愛插件:) – Alxandr

回答

2

雖然我還沒有和jQuery UI的工作之前,我參加了一個刺在這一個晚上。看起來你在jsfiddle中顯示的代碼有兩個問題。第一個是在UI 1.8,你不再需要做創建窗口小部件時延長,

$.widget("ui.boxer", $.ui.mouse, { 
    ... 
}); 

切換到宣佈一個小部件的這種新的風格,爲this._mouseInit()錯誤消失。在我們解決您的問題之前,需要完成這個工作,這就是爲什麼默認值不起作用。在此承諾https://github.com/jquery/jquery-ui/commit/90fb45dffafc2e891b1ebca948ad33e6b94de112中,ui.mouse.defaults被替換爲options。由於options是小工具的一部分,你現在必須延長原型,

$.extend($.ui.boxer.prototype, { 
    options: $.extend({}, $.ui.mouse.prototype.options, { 
     appendTo: 'body', 
     distance: 0 
    }) 
}); 

這些變化導致了一些作品(http://jsfiddle.net/wqvJG/1/)。順便說一下,這段代碼的功能非常棒:)。

+0

太棒了,我回去的時候會試試! –

0

該部分似乎正在工作(我調試它,並確保appendTo正如預期的說。)有一個關於tmp變量使用兩次的警告,所以我解決了這個問題。隨着這一變化,演示似乎正在工作,因爲我認爲它應該。這有什麼不對的地方:

http://jsbin.com/aqowa/150/edit#javascript,html

+0

它的工作原理是因爲它使用jQuery 1.3.2和jQueryUI 1.7.2,而不是1.5.1和1.8.5。最近兩次修復它時遇到問題。 –

+0

我看到了,也許發佈它的一個小提琴打破,所以我們都可以調試它。但我的建議只是調試它,並進入該功能。 ui.defaults可能在1.8.x – Milimetric

+0

http://jsfiddle.net/HQSXt/ –