jQueryUI。扩展困难

时间:2011-08-11 12:48:13

标签: javascript jquery jquery-ui

我正在试图弄清楚如何修复jQueryUI 1.8.5和jQuery 1.5.1的this代码,并且我对这些高级内容感到不幸,有人可以帮忙吗?

问题在于以下代码:

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

由于某种原因,它不会使用appendTo和距离值初始化选项。

2 个答案:

答案 0 :(得分: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/)。顺便说一句,这段代码的作用很棒:)。

答案 1 :(得分:0)

那部分似乎正在工作(我调试它并确保appendTo正如预期的那样说。)有关于tmp变量被使用两次的警告所以我修复了它。随着这一变化,演示似乎正如我认为应该的那样工作。它有什么问题:

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