javascript - 通过重新定义父方法在 Jquery UI 中扩展小部件

标签 javascript jquery-ui widget jquery-ui-dialog extending

我尝试根据 documentation 扩展 UI 对话框(用户界面版本 1.8.16):

(function($) {
    $.widget('ui.mydialog', $.extend(true, $.ui.dialog.prototype, {
        _create: function() {
            return $.Widget.prototype._create.apply(this, arguments);
        }
    }));
})(jQuery);

$(function() {
    $('div#dialog').mydialog();
});

执行此代码会导致 JS 错误:“this.uiDialog is undefined”。

如果尝试覆盖 _init() 方法没有错误,但父方法调用无效。

我很困惑.. 哪种扩展方式是合法的,例如放置一些自定义初始化代码?

最佳答案

我认为这篇文章可以解决您的问题:Inherit from jQuery UI dialog and call overridden method .

简而言之,如果你想构建一个继承jQuery UI Dialog的widget,你可以这样做:

(function($) {
    $.widget("ui.mydialog", $.ui.dialog, {
        _create: function() {
            $.ui.dialog.prototype._create.call(this);
        }
    });

})(jQuery);

实际操作:http://jsfiddle.net/william/RELxP/ .


本教程将为您启迪:http://wiki.jqueryui.com/w/page/12138135/Widget%20factory .简而言之,$.Widget 是基础小部件对象。尽管它有一个 _create 函数,但默认情况下它什么都不做,将初始化代码留给子类。看看这个更新的例子:http://jsfiddle.net/william/RELxP/1 .

关于javascript - 通过重新定义父方法在 Jquery UI 中扩展小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450791/

相关文章:

javascript - 实现 D3FC-Sample 以减少数据

javascript - jQuery UI 可对整个 div 进行排序

javascript - jQuery ("#dialog").dialog ('close' ) 无法使用单独 View 上的按钮

Flutter 从 widget 中获取文本

javascript - 你如何在 AngularJS 下使用 jqlite 找到第一个可见元素?

javascript - 使用javascript从html表中删除元素

javascript - 有一个简单但有用的 jquery.JsPlumb 示例吗?

css - 在 Wordpress 页脚上放置更多小部件

linux - 当我将我的QT版本从4.8.6升级到4.8.7时,widget列表会失去焦点

javascript - 在vuejs中传递 Prop 数据