我正在尝试解决如何修复 this我正在编写 jQueryUI 1.8.5 和 jQuery 1.5.1 的代码,但我对如此高级的东西不走运,有人可以帮忙吗?
问题出在下面的代码上:
$.extend($.ui.boxer, {
defaults: $.extend({}, $.ui.mouse.defaults, {
appendTo: 'body',
distance: 0
})
});
由于某种原因,它不会使用appendTo和距离值初始化选项。
最佳答案
虽然我以前没有使用过 jQuery UI,但我今晚还是尝试了一下这个。看来您在 jsfiddle 中显示的代码有两个问题。首先是在 UI 1.8 中,创建 widget 时不再需要进行扩展,
$.widget("ui.boxer", $.ui.mouse, {
...
});
切换到这种声明小部件的新样式后,this._mouseInit()
的错误就会消失。在我们解决您的问题之前需要完成此操作,这就是默认值不起作用的原因。在此提交中https://github.com/jquery/jquery-ui/commit/90fb45dffafc2e891b1ebca948ad33e6b94de112 , ui.mouse.defaults
已替换为 options
。由于 options
是小部件的一部分,因此您现在必须扩展原型(prototype),
$.extend($.ui.boxer.prototype, {
options: $.extend({}, $.ui.mouse.prototype.options, {
appendTo: 'body',
distance: 0
})
});
这些更改产生了一些有效的结果 ( http://jsfiddle.net/wqvJG/1/ )。顺便说一句,这段代码的作用非常棒:)。
关于javascript - jQueryUI .extend 的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026114/